2017-10-07 69 views
1

我有两个表:如何在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 

现在我想,如果我得到qrcodesidqr_detailsqrcode_id列然后它会显示文字Yes以外它会显示No。我怎么写这个?提前致谢。

到目前为止我试过:

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

它显示了一个错误。

+0

你是否得到完整性约束错误? –

+0

为什么你不使用雄辩关系呢? –

+0

我真的很难理解这个问题。据推测'qr_details'是一张表格,里面有一行'qrcodes'的细节? 'id'怎么会不在那里? – apokryfos

回答

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); 

我现在已经创建即状态新的密钥包含在“是”或价值不 之后,你可以根据叶片文件中使用您的要求.. 希望它有助于:)

+0

是的,我正在寻找这种..谢谢:) –

+0

欢迎您...高兴地帮助:) – kunal

2

使用DB::rawselect()

$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(); 
+0

以下看到我的回答我收到此错误:https://prnt.sc/guc1gm –

+0

我认为这是相反的方式。 qrcodes表是基表,一个'qr_details'是相关的表,OP希望看看每个'qrcode'在'qr_details'表 – apokryfos

+0

'qr_details'表中是否有条目不需要任何条目。当任何人绘制'qrcodes'表格的qr码时,它将填满。 –