見出し画像

Laravelのクロージャ内に変数を渡す方法。

Laravelのクロージャには外部で定義されている変数はそのままでは使用できません。
しかし、変数を渡す方法としてuse()を使用すればクロージャ内に変数を渡すことができます。

今回クロージャに変数を渡したかった経緯
A and (B or C)みたいな()付きの複雑な条件を指定したかった。

行ったこと

$query->where('A', '=', $column1);  
$query->where('B', '=', $column2)->orwhere('C','=', $column3); 

これだとうまくいがず、、、
解決策としてはクロージャにuseで変数を渡してあげるのが正解らしい。

解決方法

$query->where('A', '=', $column1);  
$query->where(function ($query) use ($column2, $column3) {              
    $query->where('B', '=', $column2)
          ->orwhere('C','=', $column3); 
});

これでandの後のor句に()がついてA and (B or C)という検索条件が出来上がる。

この記事が気に入ったらサポートをしてみませんか?