我的查询有问题。我的示例查询如下
$answers = DB::table('IC2017_AY')
->join('IC2017', 'IC2017_AY.UNITID', '=', 'IC2017.UNITID')
->join('SFA1617_P1', 'IC2017_AY.UNITID', '=', 'SFA1617_P1.UNITID')
->join('cost', 'IC2017_AY.UNITID', '=', 'cost.UNITID')
->join('gpa', 'IC2017_AY.UNITID', '=', 'gpa.UNITID')
->join('enrollment', 'IC2017_AY.UNITID', '=', 'enrollment.UNITID')
->join('major', 'IC2017_AY.UNITID', '=', 'major.UNITID')
->join('preference', 'IC2017_AY.UNITID', '=', 'preference.UNITID')
->select('IC2017_AY.TUITION2 as in_state_tuition','IC2017_AY.FEE2 as in_state_fee','IC2017_AY.TUITION3 as out_state_tuition','IC2017_AY.FEE3 as out_state_fee','IC2017_AY.CHG4AY3 as books_supplies','IC2017_AY.CHG6AY3 as other_expenses','IC2017.ROOMAMT as room_charge','IC2017.BOARDAMT as board_charge','IC2017.RMBRDAMT as combined_charge','SFA1617_P1.SCUGRAD as total_receiving','SFA1617_P1.SCUGFFN as full_time_receiving','SFA1617_P1.UAGRNTN as total_receiving_grant')
->where($where_data);
->get();
但是现在我想传递连接数组,因为连接将在运行时确定,例如 下面的代码仅是示例。
$joins = [
['country', 'user_master.country_id', '=', 'country.country_id'],
['city', 'user_master.city_id', '=', 'city.city_id'],
['login_master', 'user_master.user_id', '=',
'login_master.user_id'],
];
如何在laravel 5.8中执行此操作 预先感谢。!
答案 0 :(得分:0)
例如,您可以使用foreach loop
$joins = [
['country', 'user_master.country_id', '=', 'country.country_id'],
['city', 'user_master.city_id', '=', 'city.city_id'],
['login_master', 'user_master.user_id', '=',
'login_master.user_id'],
];
$answers = DB::table('IC2017_AY')
->join('IC2017', 'IC2017_AY.UNITID', '=', 'IC2017.UNITID')
->join('SFA1617_P1', 'IC2017_AY.UNITID', '=', 'SFA1617_P1.UNITID')
->join('cost', 'IC2017_AY.UNITID', '=', 'cost.UNITID')
->join('gpa', 'IC2017_AY.UNITID', '=', 'gpa.UNITID')
->join('enrollment', 'IC2017_AY.UNITID', '=', 'enrollment.UNITID')
->join('major', 'IC2017_AY.UNITID', '=', 'major.UNITID')
->join('preference', 'IC2017_AY.UNITID', '=', 'preference.UNITID');
foreach($joins as $key=>$value){
$answer = $answer->join(implode(",",$value));
}
return $answer->select('IC2017_AY.TUITION2 as in_state_tuition','IC2017_AY.FEE2 as in_state_fee','IC2017_AY.TUITION3 as out_state_tuition','IC2017_AY.FEE3 as out_state_fee','IC2017_AY.CHG4AY3 as books_supplies','IC2017_AY.CHG6AY3 as other_expenses','IC2017.ROOMAMT as room_charge','IC2017.BOARDAMT as board_charge','IC2017.RMBRDAMT as combined_charge','SFA1617_P1.SCUGRAD as total_receiving','SFA1617_P1.SCUGFFN as full_time_receiving','SFA1617_P1.UAGRNTN as total_receiving_grant')
->where($where_data);
->get();