Laravel雄辩加入与IN子句

问题描述 投票:0回答:1

我目前正试图用雄辩查询生成器创建具有多个子句的联接,这是一个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

php mysql laravel
1个回答
1
投票

由于这是有点儿目前僵局,我张贴此作为一个答案,直到此正式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)方法,如果您想拥有雄辩的收藏从结果数组回来。

© www.soinside.com 2019 - 2024. All rights reserved.