我目前正试图用雄辩查询生成器创建具有多个子句的联接,这是一个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是用于示例的目的,并且将通过动态)
可以雄辩支持在加入条款?
这仅仅是一个相当大的查询的一部分,所以宁愿使用连接,而不是使用whereIn
由于这是有点儿目前僵局,我张贴此作为一个答案,直到此正式PRED。不幸的是加入与在条款尚未正式支持。有这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);
也有Model::hydrate($array)
方法,如果您想拥有雄辩的收藏从结果数组回来。