我如何在Laravel 5.2查询中返回自定义文本?

时间:2017-10-07 06:57:43

标签: php mysql laravel laravel-5.2

我有两张桌子:

qr_details表:

id   qrcode_id  prize_id   created_at           updated_at
12   1          12         2017-10-06 19:53:10  0000-00-00 00:00:0

qrcodes表:

id   correspond_code    qrcode_note    created_at             updated_at

1    plgt73g            X Batch        2017-10-06 21:55:11    2017-09-28 08:57:53   
2    gs35dn4            Y Batch        2017-10-06 21:55:22    2017-10-04 04:38:50
3    df324f3            X Batch        2017-10-06 21:55:36    2017-10-06 13:29:11

现在我希望如果我在qrcodesid列中获得qr_detailsqrcode_id,那么它将显示文本Yes,而不是显示No 1}}。我是怎么写的?提前谢谢。

到目前为止我已尝试过:

$drawOr = DB::table('qr_details')
        ->leftJoin('qrcodes', 'qr_details.qrcode_id', '=', 'qrcodes.id')
        ->where('qrcode_id','=', $id)
        ->get();
        dd($drawOr);

显示错误。

2 个答案:

答案 0 :(得分:2)

select()中使用DB::raw

$drawOr = DB::table('qr_details')
        ->select('qr_details.*',
          DB::raw("(CASE WHEN qrcodes.id IS NOT NULL THEN 'Yes' ELSE 'No' END) AS somealias"))
        ->leftJoin('qrcodes', 'qr_details.qrcode_id', '=', 'qrcodes.id')
        ->where('qrcode_id','=', $id)
        ->get();

答案 1 :(得分:1)

这很简单。您可以在控制器中使用此代码: -

$drawOr = DB::table('qrcodes')
    ->get();

foreach($drawOr as $key => $draw){
    $getqrDeatilCount = DB::table('qr_details')->where('qrcode_id',$draw->id)->count();
    if($getqrDeatilCount > 0){
        $drawOr[$key]->status = "Yes";
    }else{
        $drawOr[$key]->status = "No";
   }
}
echo "<pre>"; print_r($drawOr);

现在我创建了新密钥,即状态,其中包含&#39; yes&#39;或没有 之后你可以根据你的要求在刀片文件中使用.. 希望它有所帮助:)