与Laravel的查询构建器一起使用复杂的whereIn

时间:2019-08-19 23:14:04

标签: mysql laravel laravel-query-builder

我们有一个SQL查询,可以单独运行。

SELECT id FROM `tblinvoices` WHERE `id` IN ( 
    SELECT invoiceid FROM `tblinvoiceitems` WHERE `type` = 'Addon' AND `relid` = 1479 AND `userid` = 9554
) AND `userid` = 9554 AND `status` = 'Unpaid'

我试图深入研究并找到一种适用于这些子选择的良好查询构建器格式,但始终会得到意想不到的结果。这是我建立的:

$db = Capsule::table('tblinvoices')->select('id')->where('userid', 9554)->where('status', 'Unpaid')->whereIn('id', function($query)
{
    $query->select('invoiceid')->from('tblinvoiceitems')->where('type', 'Addon')->where('relid', 1479)->where('userid', 9554);
});

我似乎误会了laravel的查询是如何工作的。

1 个答案:

答案 0 :(得分:0)

我很笨,我在查询结束时忘记了get();

$db = Capsule::table('tblinvoices')->select('id')->where('userid', 9554)->where('status', 'Unpaid')->whereIn('id', function($query)
    {
        $query->select('invoiceid')->from('tblinvoiceitems')->where('type', 'Addon')->where('relid', 1479)->where('userid', 9554);
    })->get();