我有3张桌子:
联盟 - 协会 - 用户
协会属于联邦。
联盟有很多协会
Federation有一个总裁:president_id,引用用户模型
协会有一个总裁:president_id,指的是用户模型
我想得到什么:
属于该联盟的所有关联,其中包含president_id == Auth :: user() - > id
我试过了:
$associations = Association::with(['federation' =>function($query){
$query->where('federation.president_id', Auth::user()->id);
}])->get();
还有:
$associations = Association::with('federation')
->where('federation.president_id', Auth::user()->id)
->get();
但是在第一种情况下,我将联邦关系的所有关联都归结为null,而在第二种情况下,它不知道federation.president_id,因为它查询表'association'
知道什么是错的吗?
答案 0 :(得分:1)
with()
仅修改预先加载的关系。要根据其关系修改查询,您需要查找whereHas()
:
$associations = Association::whereHas('federation', function($query) {
$query->where('president_id', Auth::user()->id);
}])
->get();