1. 程式人生 > >thinkphp5.0.23升級之後sql join別名報錯問題解決

thinkphp5.0.23升級之後sql join別名報錯問題解決

問題原因:很早之前寫過的程式碼,一直正常,前端時間因為漏洞升級了tp版本,發現相容問題

->join('jianjie_task_list_tg_log as b','a.id = b.tg_id','LEFT') 報錯

提示我找不到表b

原始程式碼

$results = Db::table('jianjie_task_list_tg')
    ->alias('a')
    ->join('jianjie_task_list_tg_log as b','a.id = b.tg_id','LEFT')
    ->field('a.id as id, channel_name, b.update_time as update_time')
    ->where($map)->order('b.id','desc')->group('b.tg_id')
    ->select();

修復後代碼

$alias=['jianjie_task_list_tg'=>'a','jianjie_task_list_tg_log'=>'b'];

$results = Db::table('jianjie_task_list_tg')
    ->alias($alias)
    ->join('jianjie_task_list_tg_log','a.id = b.tg_id','LEFT')
    ->field('a.id as id, channel_name, b.update_time as update_time')
    ->where($map)->order('b.id','desc')->group('b.tg_id')
    ->select();

就相當於把別名在alias裡定義好。

影響原因傳入條件map:

Array ( [b.update_time] => Array ( [0] => between time [1] => Array ( [0] => 2018-12-18 [1] => 2018-12-19 ) ) )

知識點:列印sql方法,select(false)  echo $results