使用laravel eloquent将null值替换为左连接中的N / A.

时间:2017-09-24 16:24:39

标签: php mysql laravel laravel-eloquent laravel-5.5

我知道在使用IFNULL的sql中我可以替换null值。但是我需要使用laravel eloquent并且也不要在laravel eloquent中使用原始sql查询。

public function testQuery() {                                                       
    $dataList = SpeechModel::leftJoin('speech_subtitle', 'speech_title.speech_title_id', 'speech_subtitle.speech_subtitle_speech_id')->get();                                     
    return $dataList;                                                                                            
}

输出

speech_title_id=null,speech_subtitle_id=null,speech_subtitle_text=null      

1 个答案:

答案 0 :(得分:0)

您可以在DB::raw()方法中使用select()

    $dataList = SpeechModel::select(
            '*', 
            DB::raw('IFNULL(speech_subtitle.speech_subtitle_speech_id, "N/A") as subtitle')
    )
    ->leftJoin(/*...*/)
    ->get();

此方法允许您在SELECT中使用原始语句时使用查询构建器。你可以为每一列做到这一点。

但是,老实说,如果这仅仅是为null交换N/A,您可能会考虑在前端进行此操作。