我正在使用Laravel(5.4)构建RAW数据库查询,并且我在该laravel中遇到问题是在SQL输出中为连接中的变量放置引号...结果是mysql认为变量...例如输出为1或数字的东西是一列并输出错误"找不到列' 1'在ON子句中
- >加入(' event_jury_sub_detail',函数($ join)使用($ userid) { $ join-> on(' event_jury_sub_detail.evtpartsub_id',' =',' event_partsubmissions.id') - >在(' event_jury_sub_detail.authoruser_id',' =',$用户ID);
问题:$ userid获取引号...并变为"和event_jury_sub_detail
。authoruser_id
= 1
" - Laravel将其视为要查找和失败的列。
如果删除了引号,它可以正常工作......如何解决此问题?
完整查询
$tbl_return = DB::table('event_partsubmissions')
->select(DB::raw('event_partsubmissions.*,
users.usr_firstnames,
users.usr_surnames,
users.email,
users.usr_nationality,
users.usr_country,
event_jury_sub_detail.id as evtjurysubdetid,
event_jury_sub_detail.evtjurysubdet_pointsawarded,
event_jury_sub_detail.evtjurysubdet_notes,
event_jury_sub_detail.evtjurysubdet_randomkey
'))
->join('event_participation', 'event_partsubmissions.evtpartsub_evtpartid', '=', 'event_participation.id')
->join('users', 'evtpart_userid', '=', 'users.id')
->join('event_jury_sub_detail', function($join) use($userid)
{
$join->on('event_jury_sub_detail.evtpartsub_id', '=', 'event_partsubmissions.id')
->on('event_jury_sub_detail.authoruser_id','=',$userid);
})
->where('event_partsubmissions.evtpartsub_evtid', '=', $id)
->where('event_partsubmissions.evtpartsub_enabled', '>=', $partlevel)
->where('event_participation.evtpart_enabled', '>=', 1)
->where('event_participation.evtpart_level', '>=', 100)
->where('users.usr_enabled', '>=', 1)
->get();
答案 0 :(得分:1)
您可以尝试使用表连接的别名:
->join('event_jury_sub_detail as ejsd', ...
并在以下地方使用别名:
->$join->on('ejsd.evtpartsub_id', '=', 'event_partsubmissions.id')
对于连接条件中的标量参数,您可以使用DB::raw($userid)
之类的DB包装器:
->on('ejsd.authoruser_id','=',DB::raw($userid));
答案 1 :(得分:0)
使用DB :: raw()
- > on(DB :: raw(" event_jury_sub_detail.authoruser_id ='"。$ userid。"'"))