我正在使用 Laravel 5.8 和
所有這些 id 都存盤在baseinfos表中。例如std_degree_id的8是這樣的:

現在不是回傳數字8,而是需要bas_value在匯出的 Excel 檔案中獲取并回傳它。
所以它看起來像這樣:
if(students.std_degree_id == 9){
// print Elementry
}elseif(students.std_degree_id == 10){
// print Academy
}else{
...
}
那我該怎么做呢?
更新#1:
$records = DB::table('members')
->where('mys_creator_id',$id)
->where('mys_olp_id',4)
->join('my_students', 'members.mbr_usr_id', '=', 'my_students.mys_mbr_id')
->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','members.mbr_address','baseinfos.bas_value',...)->get()->toArray();
return $records;
如果我再添加兩個baseinfos表連接,則會出現此錯誤:
SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique
這主要是因為我baseinfos.bas_value在select.
uj5u.com熱心網友回復:
您需要再加入一張表并顯示該表中的相應欄位:
public static function getAccounts($id)
{
$records = DB::table('members')
->where('mys_creator_id',$id)
->where('mys_olp_id',4)
->join('my_students', 'members.mbr_usr_id', '=', 'my_students.mys_mbr_id')
->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
->join('baseinfos', 'students.std_degree_id', '=', 'baseinfos.bas_id')
->select('members.mbr_name', 'members.mbr_family', 'members.mbr_father_name','members.mbr_national_code','members.mbr_birthday','members.mbr_phone','members.mbr_mobile','members.mbr_post_code','members.mbr_prv_id','members.mbr_cit_id','members.mbr_gender_id','members.mbr_address','baseinfo.bas_value','students.std_grade_id','students.std_filed_id','students.std_major_id','students.std_school','students.std_education_type_id','my_students.mys_paid_price')
->get()->toArray();
return $records;
}
uj5u.com熱心網友回復:
我不確定您是否在其他任何地方使用 getAccounts,如果您要創建一種新方法來格式化此資料。
public static function getAccounts($id)
{
$degrees = [
9 => 'Elementry',
10 => 'Academy',
];
$records = DB::table('members')
->where('mys_creator_id',$id)
->where('mys_olp_id',4)
->join('my_students', 'members.mbr_usr_id', '=', 'my_students.mys_mbr_id')
->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
->select('members.mbr_name', 'members.mbr_family', 'members.mbr_father_name','members.mbr_national_code','members.mbr_birthday','members.mbr_phone','members.mbr_mobile','members.mbr_post_code','members.mbr_prv_id','members.mbr_cit_id','members.mbr_gender_id','members.mbr_address','students.std_degree_id','students.std_grade_id','students.std_filed_id','students.std_major_id','students.std_school','students.std_education_type_id','my_students.mys_paid_price')
->get();
// if map is not working add it in collect($records)->map.
$records->map(function($record) use($degrees) {
$record->std_degree_id = $degrees[$record->std_degree_id];
return $record;
});
return $records->toArray();
}
但我猜$record->std_degree_id是一個關系,所以只需使用關系標題而不是我創建的陣列映射。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382376.html
