获取属于联合的所有关联,其中president_id = user_id在Laravel 5.2中

时间:2016-05-10 18:55:44

标签: laravel eloquent

我有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'

知道什么是错的吗?

1 个答案:

答案 0 :(得分:1)

with()仅修改预先加载的关系。要根据其关系修改查询,您需要查找whereHas()

$associations = Association::whereHas('federation', function($query) {
        $query->where('president_id', Auth::user()->id);
    }])
    ->get();