エンジニアのひよこ_level10

毎日更新してた人。たまに記事書きます。

【Laravel】すでにDBから取得したCollectionを絞り込むwhere関数【634日目】

データを絞り込みたい

// データの取得
$x_item = Xitem::get();
$this->aFunc($x_item);

// $x_itemの中で条件が合致したものだけ行う処理

こんなふうに、一度データベースから取得したデータの内、一部だけを利用してデータを操作したい。

このときに、クエリを再発行して再取得する方法もあるが、SQL節約したり、データがその間変わっているのを恐れるなら、
取得後のデータを絞り込みたい

where関数whereIn関数等

データベースから get関数などで取得したデータはCollectionと呼ばれる、ちょっとリッチな配列に格納される。

そのCollectionには便利な関数がいくつかあります。
(DBから取得する以外で生成されたCollectionでも使えます)

// データの取得
$x_item = Xitem::get();
$this->aFunc($x_item);

// user_idが1と2のものだけ取り出す
$items = $xxx_items->whereIn('user_id', [1,2]);

// idが1と2のものどちらかがあれば関数を実行
if (!$items->isEmpty()) {
    $this->bFunc();
}

このように、取得後もクエリを再発行せずとも、データを絞り込む事ができます。

Collectionには便利な関数が他にもあるので、クエリを再発行する必要があるか、一度考えてみましょうφ(・