Laravel过滤器,查询生成器检索错误的数据

时间:2017-08-10 06:43:39

标签: php laravel eloquent

查询正在检索错误数据,必须仅检索departamento 非空。任何人都可以帮助我吗?

代码:

$banca = Banca::with(['trabalho.membrobanca.departamento' => function($query) use ($d) {
    $query->where('id', $d);
}])->get();

$banca = collect($banca)
    ->unique('trabalho_id')
    ->values()
    ->all();

Result this

关系图。

Diagram

2 个答案:

答案 0 :(得分:0)

您可以使用Laravel has()函数。它将返回返回 Banca ,其中 departamento 不为空

$banca = Banca::with(['trabalho.membrobanca.departamento' => function($query) use ($d) {
    $query->where('id', $d);
}])

// has function will return banca if banca has non-null departamento
->has('trabalho.membrobanca.departamento')

->get();

检查一下:

https://laravel.com/docs/5.4/eloquent-relationships#querying-relationship-existence

答案 1 :(得分:0)

您可以将过滤器放在memrobanca表上并过滤空值。

$banca = Banca::with([
        'trabalho.membrobanca' => function($query) use ($d) {
            $query->where('departamento_id', $d)
                ->whereNotNull('departamento_id')
                ->with('departamento');
        }
    ])
    ->get();