如何在将 where 子句应用于其子 table 时获取父 table 的 eloquent 集合

How to get eloquent collection of parent table while applying where clause to its child table

我有 2 个 table。 项目project_categories。后面的table有外键project_id对应projectstable。两者具有一对一的关系,出于某种原因,我希望项目类别信息位于不同的 table 中。

现在,我想让用户按类别浏览项目。如果类别是 projects table 的一部分,那么我将简单地应用 where 子句来获取选定类别的项目。 eloquent/query 构建器是否提供任何干净的方法来获取 项目 table 的集合,这些项目的类别来自 project_categories table?同样,project_categories 有一个外键 project_id 将其链接到 projects table.

我花了很多时间试图找到一个巧妙的解决方案,但到目前为止无济于事。非常感谢您的帮助。

谢谢。

在未能从 eloquent 中找到开箱即用的内置功能后,我决定 eloquent 实际上并没有超出 table 之间的关系。而这个任务只能使用 joins.

来完成

但是,Laravel 仍然提供了使用 table 连接的非常简洁的语法。 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

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