首页 文章

Laravel从数据库查询中的变量中删除引号

提问于
浏览
1

我正在使用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 回答

  • 0

    您可以尝试使用表连接的别名:

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

    使用DB :: raw()

    • on(DB :: raw(“event_jury_sub_detail.authoruser_id ='” . $ userid . “'”))

相关问题