【问题标题】:pass array of join to query in laravel将连接数组传递给laravel中的查询
【发布时间】:2019-04-18 11:44:50
【问题描述】:

我的查询有问题。我的示例查询如下

$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 中做到这一点 提前谢谢!

【问题讨论】:

    标签: mysql sql laravel join


    【解决方案1】:

    您可以使用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();
    

    【讨论】:

      猜你喜欢
      • 2020-01-20
      • 1970-01-01
      • 2013-09-24
      • 2019-02-05
      • 1970-01-01
      • 2016-12-19
      • 2021-03-30
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多