我有两张桌子:
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
现在我希望如果我在qrcodes
表id
列中获得qr_details
表qrcode_id
,那么它将显示文本Yes
,而不是显示No
1}}。我是怎么写的?提前谢谢。
到目前为止我已尝试过:
$drawOr = DB::table('qr_details')
->leftJoin('qrcodes', 'qr_details.qrcode_id', '=', 'qrcodes.id')
->where('qrcode_id','=', $id)
->get();
dd($drawOr);
显示错误。
答案 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;或没有 之后你可以根据你的要求在刀片文件中使用.. 希望它有所帮助:)