使用 Laravel 的查询构建器或 Eloquent 将一个表与一个临时表进行内部连接
Posted
技术标签:
【中文标题】使用 Laravel 的查询构建器或 Eloquent 将一个表与一个临时表进行内部连接【英文标题】:Using Laravel's query builder or Eloquent to inner join a table with a temporary one 【发布时间】:2020-12-30 18:51:44 【问题描述】:我有一个相当复杂的查询,我将对其进行简化以使其更易于阅读:
SELECT `temp_table`.field1, `temp_table`.field2 FROM
(A TEMPORARY TABLE MADE OUT OF A SELECTION QUERY) AS temp_table
INNER JOIN table ON temp_table.field1 = table.id
WHERE table.some_field = 'something'
我目前正在为此使用 RAW 查询,但现在我想使用 Laravel 中的 Query Builder 或 Eloquent ORM 重写它。我是 Laravel 的新手。因此,任何想法或帮助表示赞赏。
【问题讨论】:
【参考方案1】:尝试使用fromSub
DB::query()->fromSub(function ($query)
$query->selectRaw('your query to get the temp_table');
, 'temp_table')->join('table','table.id','=','temp_table.field1')
->where('table.some_field','something');
'fromSub'方法的第二个参数是一个字符串,在sql中是'as',所以你可以用它来命名临时表......
【讨论】:
以上是关于使用 Laravel 的查询构建器或 Eloquent 将一个表与一个临时表进行内部连接的主要内容,如果未能解决你的问题,请参考以下文章
[ Laravel 5.5 文档 ] 数据库操作 —— 在 Laravel 中轻松实现分页功能
Laravel Eloquent - orWhereHas 方法 - 何时使用以及如何使用