我有一個 Laravel 5.8 專案,我需要加入 3 個表來顯示一些結果。
基本上,我已將所有自定義 ID 存盤在名為baseinfos.
例如,這里有兩個自定義 ID,我需要檢索它們bas_value:

所以我試過這個:
$records = DB::table('members')
->where('mys_olp_id',4)
->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
->join('baseinfos', 'students.std_degree_id', '=', 'baseinfos.bas_id')
->join('baseinfos', 'members.mbr_gender_id', '=', 'baseinfos.bas_id')
->select('baseinfos.bas_value', 'baseinfos.bas_value')
->get()->toArray();
但這是錯誤的,并向我顯示了錯誤:
SQLSTATE[42000]:語法錯誤或訪問沖突:1066 不是唯一的
所以我需要這樣說:
// as student_degree
->join('baseinfos', 'students.std_degree_id', '=', 'baseinfos.bas_id')
// as member_gender
->join('baseinfos', 'members.mbr_gender_id', '=', 'baseinfos.bas_id')
接著:
->select('student_degree', 'member_gender')
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
嘗試像這樣使用alias:
$records = DB::table('members ass mm')
->where('mm.mys_olp_id',4)
->join('students as ss', 'mm.mbr_usr_id', '=', 'ss.std_mbr_id')
->join('baseinfos as bif', 'ss.std_degree_id', '=', 'bif.bas_id')
->join('baseinfos as bifs', 'mm.mbr_gender_id', '=', 'bifs.bas_id')
->select('mm.*')
->get()->toArray();
如果適合您,您也可以使用leftJoin:
$records = DB::table('members ass mm')
->where('mm.mys_olp_id',4)
->leftJoin('students as ss', 'mm.mbr_usr_id', '=', 'ss.std_mbr_id')
->leftJoin('baseinfos as bif', 'ss.std_degree_id', '=', 'bif.bas_id')
->leftJoin('baseinfos as bifs', 'mm.mbr_gender_id', '=', 'bifs.bas_id')
->select('mm.*')
->get()->toArray();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382375.html
標籤:mysql 拉拉维尔 加入 laravel-5.8
