gpt4 book ai didi

php - Laravel Eloquent 连接 IN 子句

转载 作者:行者123 更新时间:2023-11-29 09:52:35 25 4
gpt4 key购买 nike

我目前正在尝试使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com