我在Laravel中有Post模型的搜索查询:
return $q ->where('title', 'like', '%'.$keyword.'%')
哪个工作完全正常。在我的Post模型中,我还有一个关系数据库categories
。这在我返回的post对象中可用作对象。
有没有办法查询category -> name
?
我试过了:
return $q ->where('category->name', 'like', '%'.$keyword.'%')
答案 0 :(得分:1)
我相信您所寻找的内容可以在这里找到:https://laravel.com/docs/5.6/eloquent-relationships#querying-relations
对于您的用例,您需要确保在Post模型中建立了关系。如果设置了这个,您的查询应该类似于以下内容:
return $q->where('title', 'like', '%'.$keyword.'%')->whereHas('category',
function ($query) use ($keyword) {
$query->where('name', 'like', '%'.$keyword.'%');
})->get();
希望这有帮助!
答案 1 :(得分:0)
如果你的数据库结构合理 - 那么就会想要使用Laravel的ORM来实现这个目标。
答案 2 :(得分:0)
我假设您有模型:
此外,您在Post模型中将category_id作为外键。 这是基本结构。
我假设你想同时搜索帖子和类别,所以你可以这样做:
return Post::leftJoin('categories', 'posts.category_id', '=', 'categories.id)
->where('categories.name', 'like', '%' . $keyword . '%')
->orWhere('posts.title', 'like', '%' . $keyword . '%')
->get();