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