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