我正在使用Laravel(5.4)构建一个RAW数据库查询,并且我遇到了一个问题,即laravel在连接中的变量的SQL输出中放置引号...结果是mysql认为变量..例如,输出为1或者数字是一列,并输出错误“在ON子句中找不到列'1'
问题SQL条款:
-
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' , '=',$用户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();
2 回答
您可以尝试使用表连接的别名:
并在以下位置使用别名:
对于连接条件中的标量参数,您可以使用类似
DB::raw($userid)
的DB包装器:使用DB :: raw()