Mysql 带IFNULL的Laravel selectSub

Mysql 带IFNULL的Laravel selectSub,mysql,laravel,laravel-5,eloquent,Mysql,Laravel,Laravel 5,Eloquent,我有一个带有相关子查询的复杂查询,我想将其集成到我的Laravel应用程序中 问题是子查询在IFNULL中。 查询非常大,我试图编写一个非常精简的查询,仅用于演示: SELECT payment_status_id, client_tbl.client_id IFNULL((SELECT payment_status_id FROM payment_status_tbl WHERE payment_status_tbl.client_id

我有一个带有相关子查询的复杂查询,我想将其集成到我的Laravel应用程序中

问题是子查询在IFNULL中。 查询非常大,我试图编写一个非常精简的查询,仅用于演示:

SELECT payment_status_id, client_tbl.client_id
    IFNULL((SELECT payment_status_id
            FROM payment_status_tbl
            WHERE payment_status_tbl.client_id = client_tbl.client_id
            ORDER BY status_date DESC
            LIMIT 1), 0) AS current_status_id
FROM client_tbl
HAVING current_status_id < 4;
我在Laravel找到了这个问题:

$query = DB::table('client_tbl')
            ->select(['payment_status_id', 'client_tbl.client_id'])
            ->selectSub(function($query) {
                $query->select('payment_status_id')
                    ->from('payment_status_tbl')
                    ->where('payment_status_tbl.client_id', '=', 'client_tbl.client_id')
                    ->orderByDesc('status_date')
                    ->limit(1);
            }, 'current_status_id')
            ->having('current_status_id', '<', 4);
但它不包括IFNULL语句,这在我的原始查询中很重要

知道这是否可能吗?

试试这个

$query = DB::table('client_tbl')
            ->select(['payment_status_id', 'client_tbl.client_id'])
            ->selectSub(function($query) {
             $getId = DB::table('payment_status_tbl')
             ->where('payment_status_tbl.client_id','`client_tbl.client_id`')
             ->select('payment_status_id')
             ->orderBy('status_date','DESC')
             ->first();
             $query->empty($getId)? 0 : $getId->payment_status_id;

            }, 'current_status_id')
            ->having('current_status_id', '<', 4);

不能将静态调用DB::raw与对象运算符->一起使用。我已经更新了答案,请尝试