關聯(lián)統(tǒng)計
版本 | 新增功能 |
---|---|
5.0.7 | 關聯(lián)統(tǒng)計支持指定統(tǒng)計屬性名 |
關聯(lián)統(tǒng)計(V5.0.5+
)
有些時候,并不需要獲取關聯(lián)數(shù)據(jù),而只是希望獲取關聯(lián)數(shù)據(jù)的統(tǒng)計(關聯(lián)統(tǒng)計僅針對一對多或者多對多的關聯(lián)關系),這個時候可以使用withCount
方法進行制定關聯(lián)的統(tǒng)計。
$list = User::withCount('cards')->select([1,2,3]);
foreach($list as $user){
// 獲取用戶關聯(lián)的card關聯(lián)統(tǒng)計
echo $user->cards_count;
}
關聯(lián)統(tǒng)計功能會在模型的對象屬性中自動添加一個以“關聯(lián)方法名+_count
”為名稱的動態(tài)屬性來保存相關的關聯(lián)統(tǒng)計數(shù)據(jù)。
如果需要對關聯(lián)統(tǒng)計進行條件過濾,可以使用
$list = User::withCount(['cards'=>function($query){
$query->where('status',1);
}])->select([1,2,3]);
foreach($list as $user){
// 獲取用戶關聯(lián)的card關聯(lián)統(tǒng)計
echo $user->cards_count;
}
一對一關聯(lián)關系使用關聯(lián)統(tǒng)計是無效的,一般可以用exists查詢來判斷是否存在關聯(lián)數(shù)據(jù)。
V5.0.7
版本以上,支持給關聯(lián)統(tǒng)計指定統(tǒng)計屬性名,例如:
$list = User::withCount(['cards'=>'card_count'])->select([1,2,3]);
foreach($list as $user){
// 獲取用戶關聯(lián)的card關聯(lián)統(tǒng)計
echo $user->card_count;
}
文檔最后更新時間:2018-06-09 15:43:53
未解決你的問題?請到「問答社區(qū)」反饋你遇到的問題