日常、いつもの考えや習慣で仮定してしまい、「実はそうでなかった」と後で冷や汗なること多々あります。Laravelのプログラミングもそうです。その過ちを繰り返さないために、出会ったらブログに書いていくことにします。
今回はCollectionに関して、最近うっかりしたこと。
例えば、tinkerで空の結果のEloquentのCollectionを作成して、
>>> $users = User::where('email', '=', '')->get(); // 空のCollection => Illuminate\Database\Eloquent\Collection {#2319 all: [], } >>> if (empty($users)) echo "空です!"
empty()
で空の判断を試みるが、「実はそうでなかった」。
empty()
は引数が配列ならOKだけれど、Collectionのオブジェクトなら空を判断できません。
正しくは、Collectionのメソッド、isEmpty()
を使います。
>>> if ($users->isEmpty()) echo "空です!" 空です!
同様に、count()
でレコード数を数えてもOKですが、否定の!が必要。
>>> if (!$users->count()) echo "空です!" 空です!
また、配列を取り出すなら、empty()も使えます。
>>> if (empty($users->all())) echo "空です!" 空です!メルマガ購読の申し込みはこちらから。