我是 laravel 世界的新手,不太了解如何撰寫正確的代碼。我有一個問題
SELECT c.cityname, count(distinct s.namep) as statecount FROM city c INNER JOIN patiens s on c.id = s.cityidp GROUP BY c.cityname ORDER BY
statecountDESC;
像這樣輸出查詢

在我的 sql 資料庫中,它的輸出效果非常好,就像我想要的那樣,但問題是我無法在 laravel 中實作該查詢。
在那個查詢中,我想知道每個城市已經被患者使用了多少。非常感謝之前的幫助
uj5u.com熱心網友回復:
由于計數,您可能需要使用原始運算式Laravel QueryBuilder的元素
$result = DB::table('cities c')
->join('patiens s','c.id','=','s.cityidp')
->select(DB::raw('c.cityname, count(distinct s.namep) as statecount'))
->groupBy('c.cityname')
->orderBy('statecount','desc')
->get();
uj5u.com熱心網友回復:
理想的情況是,如果您將表作為模型(城市、患者)以及這兩個模型之間的關系。
//City model
public function patiens(){
return $this->hasMany(Patien::class, 'cityidp');
}
比你可以做的:
$cities = City::withCount('patiens')->get();
在結果回圈中:
foreach($cities as $city){
echo $city->cityname." -> ".$city->patiens_count."<br/>";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/409068.html
標籤:
下一篇:sql將約束從唯一更改為普通文本
