如何使用()关系

时间:2016-05-30 17:31:14

标签: laravel eloquent

我正在尝试做这样的事情:

$verfuegbarkeiten = Verfuegbarkeit::verfuegbar()->with('product', 'producer', 'producer.user', 'producer.user.ort')->where('product.kategorie_id', '=', $_GET['kat'])->get()->toArray();

我想使用'where'子句,所以我只能获得'product的属性'kategorie_id'与GET参数匹配的结果。我如何才能在某个关系中“在哪里”?对我来说这个值非常重要,因此在相关模型中编写修复函数不是一个好的解决方案。

每个提示都赞赏

1 个答案:

答案 0 :(得分:2)

您需要whereHas(),此处有文档:https://laravel.com/docs/5.2/eloquent-relationships#querying-relations

对于你的例子,这意味着这样的事情:

$kat = $_GET['kat'];
$verfuegbarkeiten = Verfuegbarkeit::verfuegbar()
    ->with('product', 'producer', 'producer.user', 'producer.user.ort')
    ->whereHas('product', function($query) use ($kat) {
        $query->where('kat', $kat);
    })
    ->get()
    ->toArray();

虽然我可能会补充说,在Laravel中通常不鼓励使用$_GET