【发布时间】:2018-02-17 18:51:43
【问题描述】:
我正在使用 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','=',$userid);
问题:$userid 得到引号...并变成“and 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();
【问题讨论】: