передать массив join для запроса в laravel - PullRequest
1 голос
/ 18 апреля 2019

У меня проблема с моим запросом. Мой пример запроса, как показано ниже

$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 заранее спасибо!

1 Ответ

0 голосов
/ 18 апреля 2019

Вы можете использовать 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...