如何在Laravel中查询关系数据库?

时间:2018-05-04 20:33:37

标签: laravel eloquent

我在Laravel中有Post模型的搜索查询:

return $q ->where('title', 'like', '%'.$keyword.'%')

哪个工作完全正常。在我的Post模型中,我还有一个关系数据库categories。这在我返回的post对象中可用作对象。

有没有办法查询category -> name

我试过了: return $q ->where('category->name', 'like', '%'.$keyword.'%')

3 个答案:

答案 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来实现这个目标。

https://laravel.com/docs/5.6/eloquent#introduction

答案 2 :(得分:0)

我假设您有模型

  1. 分类
  2. 此外,您在Post模型中将category_id作为外键。 这是基本结构。

    我假设你想同时搜索帖子和类别,所以你可以这样做:

    return Post::leftJoin('categories', 'posts.category_id', '=', 'categories.id)
        ->where('categories.name', 'like', '%' . $keyword . '%')
        ->orWhere('posts.title', 'like', '%' . $keyword . '%')
        ->get();