在将where子句应用于其子表时,如何获得父表的雄辩的集合

时间:2019-04-25 23:47:29

标签: php eloquent laravel-5.7

我有2张桌子。 项目 project_categories 。后面的表具有与 projects 表相对应的外键 project_id 。两者都有一对一的关系,由于某种原因,我希望项目类别信息位于不同的表中。

现在,我想让用户按类别浏览项目。如果category是 projects 表的一部分,那么我将简单地应用 where 子句以获取选定类别的项目。雄辩的/查询生成器是否提供任何干净的方法,可以从 project_categories 表中获得类别的 projects 表?同样, project_categories 具有一个将其链接到 projects 表的外键 project_id

我花了很多时间试图找到一个整洁的解决方案,但到目前为止仍然无济于事。您的帮助将不胜感激。

谢谢。

1 个答案:

答案 0 :(得分:0)

在无法从雄辩的开箱即用中找到内置功能之后,我做出了一个决定,即雄辩实际上并没有超出表之间的关系。而且只能使用 joins 来完成此任务。

但是,Laravel仍然提供使用表联接的简洁语法。 Laravel通过 DB Facade 来提供此信息。这是一个简单的联接示例,它可以使用关系数据库以最有效的方式有效地解决上述问题。

$projects = DB::table('projects')
            ->join('project_categories', 'projects.id', '=', 'project_categories.project_id')
            ->where('project_categories.main_category',$request->get('mc'))
            ->select('projects.*')
            ->get();

注意!不要忘记引入 DB Facade

以上陈述完全符合要求。关于为什么这可能是关系数据库中此类用例存在的最有效方式的理由是,该语句仅查询数据库一次。希望这对某人有帮助。