作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在尝试使用 Eloquent 查询生成器创建包含多个子句的联接,其中一个是 IN 子句。
我想要创建的查询类型是
SELECT * FROM trusts t
LEFT JOIN trust_group tg ON tg.trust_id = t.id
AND tg.group_id IN (1,2,4)
我已经尝试过
->leftJoin('trust_group', function($join) {
$join->on('trust_group.trust_id', '=', 'trusts.id');
$join->on('trust_group.group_id', 'IN', [1,2,4]);
})
结果
and `trust_group`.`group_id` = `IN`
我也尝试过
->leftJoin('trust_group', function($join) {
$join->on('trust_group.trust_id', '=', 'trusts.id');
$join->on(DB::raw('trust_group.group_id IN (1,2,4)'));
})
但这会导致查询包含类似于
的内容and trust_group.group_id IN (1,2,4) = ``
(显然这些组 ID 是出于示例目的,并且是动态的)
Eloquent 可以支持连接上的 IN 子句吗?
这只是相当大的查询的一部分,因此更愿意使用联接而不是使用 whereIn
最佳答案
由于目前这有点僵局,我将其作为答案发布,直到正式发布为止。不幸的是,官方尚未支持使用 In 子句进行连接。这个closed thread中有一些讨论
您可以将其用作原始查询:
<?php
$results = DB::select("
SELECT * FROM trusts t
LEFT JOIN trust_group tg ON tg.trust_id = t.id
AND tg.group_id IN (?)", $groupIds);
如果您想从结果数组中返回 Eloquent 集合,还有 Model::Hydrate($array)
方法。
关于php - Laravel Eloquent 连接 IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54543762/
我是一名优秀的程序员,十分优秀!