laravel 5.2搜索相关实体

时间:2016-08-07 16:02:00

标签: php laravel relational-database laravel-5.2

假设我有一个名为'Commodity'的模型,其category_id属于一个类别。

在Commodity.php中,我定义了这种关系:

public function category(){
    return $this->belongsTo('App\Category');
}

现在,我想找到他们的类别名称包含'glass'的商品

我试过了:

$items = Commodity::orderBy('id', 'desc')->category()->where('title', 'LIKE', '%glass%');

但它填充了这个错误:

  

调用未定义的方法Illuminate \ Database \ Query \ Builder :: category()

1 个答案:

答案 0 :(得分:2)

请阅读涵盖querying relations的官方文档。

  

有时您可能希望加载关系,但也为热切加载查询指定其他查询约束。这是一个例子:

$users = App\User::with(['posts' => function ($query) {

    $query->where('title', 'like', '%first%');

}])->get();

所以,关于你的问题我建议接下来尝试:

$commodities = App\Commodity::with(['category' => function ($query) {

    $query->where('title', 'like', '%glass%');

}])->orderBy('id', 'desc')->get();