我想加入 3 個名為members,students和 的表baseinfos。
并且 baseinfos 保存了一些idasbas_id和它的名稱存盤在bas_value:

這是我的代碼:
$records = DB::table('members')
->where('mys_olp_id',4)
->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
->join('baseinfos as gender', 'members.mbr_gender_id', '=', 'gender.bas_id as gvalue')
->join('baseinfos as degree', 'students.std_degree_id', '=', 'degree.bas_id as dvalue')
->select('gender.gvalue', 'degree.dvalue')
->get()->toArray();
但這是錯誤的,并向我展示了這個錯誤:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as `gvalue` inner join `baseinfos` as `degree`
請注意,我不能這樣說:
$records = DB::table('members')
->where('my_students.mys_olp_id',4)
->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
->join('baseinfos as degree', 'students.std_degree_id', '=', 'degree.bas_id')
->join('baseinfos as gender', 'members.mbr_gender_id', '=', 'gender.bas_id')
->select('gender.bas_value', 'degree.bas_value')
->get()->toArray();
因為degree.bas_value會改寫gender.bas_value!
那么如何正確連接這 3 個表呢?
uj5u.com熱心網友回復:
您在 join 內的別名格式不正確。我認為你可以通過這種方式實作這一點-
$records = DB::table('members')
->join('students', 'students.std_mbr_id', '=', 'members.mbr_usr_id')
->join('baseinfos as gender','gender.bas_id', '=', 'members.mbr_gender_id')
->join('baseinfos as degree','degree.bas_id' , '=', 'students.std_degree_id')
->where('mys_olp_id',4)
->select('gender.bas_id as gvalue', 'degree.bas_id as dvalue')
->get();
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382374.html
標籤:php 拉拉维尔 加入 laravel-5.8
