ハジメトーク最新記事

ハジメクリエイト社員による、日々の業務やトレンド、日常のアレコレについてお届けします。

もっと見る

【Laravel基礎】Collectionオブジェクトが空かどうか判別する方法

2025.10.03

こんにちは、Morimotoです。

ここ最近、Laravelでのシステム開発にちょこちょこ関わるようになり、動画教材などを活用して勉強しています。
動画などを見て理解した気になっていても、実際にコードを書こうとすると詰まってしまい、「どうすればよかったっけ?」となってまた調べる…というループに陥ることもあります。

なので、今回は「LarabelのCollectionオブジェクトが空かどうか判定する方法」を知識定着と自分への備忘録のために書いていこうと思います。

Collectionオブジェクトが空かどうか判定する方法

Collectionオブジェクトが空かどうか判定するにはいくつか方法があります。

今回はタスク管理アプリを例として、コントローラーで取得したデータが空かどうか判定していこうと思います。

判定する方法は下記の4つです。

  • isEmpty()メソッドを使う方法
  • isNotEmpty()メソッドを使う方法
  • count()メソッドを使う方法
  • toArray()で配列に変換して判定する方法

それぞれ確認していきましょう。

isEmpty()メソッドを使う方法

これが一番シンプルで分かりやすい方法です。
メソッド名の通り「空ですか?」と聞く方法だからです。

コントローラーでは下記のように使用できます。

// app/Http/Controllers/TaskController.php

public function index()
{
    // 全てのタスクを取得
    $tasks = Task::all();

    // コレクションが空かどうかを判定
    if ($tasks->isEmpty()) {
        // タスクが一つもない場合の処理
        return view('tasks.index', ['message' => 'タスクはまだありません。']);
    }

    // タスクがある場合の処理
    return view('tasks.index', ['tasks' => $tasks]);
}

ここでは$tasks->isEmpty()trueを返した場合、つまりタスクが1件も存在しない場合にメッセージを返しています。

isNotEmpty()メソッドを使う方法

これはisEmpty()メソッドと逆で「空ではありませんか?」と聞くメソッドです。

コントローラーでは下記のように使用されます。

// app/Http/Controllers/TaskController.php

public function index()
{
    // 全てのタスクを取得
    $tasks = Task::all();

    // コレクションが空でないかを判定
    if ($tasks->isNotEmpty()) {
        // タスクが一件以上ある場合の処理
        return view('tasks.index', ['tasks' => $tasks]);
    }

    // タスクが一つもない場合の処理
    return view('tasks.index', ['message' => 'タスクはまだありません。']);
}

$tasks->isNotEmpty()trueを返した場合、つまりタスクが1件以上あった場合はビューファイルに$taskのデータを渡すようにしています。

count()メソッドを使う方法

これはCollectionオブジェクトの要素数を数えるcount()メソッドを使用して、1件以上存在するかどうか判定する方法です。

PHPのcount()関数と同じように使用できます。

// app/Http/Controllers/TaskController.php

public function index()
{
    // 全てのタスクを取得
    $tasks = Task::all();

    // コレクションの要素数が1件以上あるかどうかを判定
    if ($tasks->count() > 0) {
        // タスクがある場合の処理
        return view('tasks.index', ['tasks' => $tasks]);
    }
    
    // タスクが一つもない場合の処理
    return view('tasks.index', ['message' => 'タスクはまだありません。']);
}

toArray()で配列に変換して判定する方法

これは、CollectionオブジェクトをtoArray()メソッドを使用して通常のPHP配列に変換したうえで、PHPのempty()関数で判定する方法です。

// app/Http/Controllers/TaskController.php

public function index()
{
    // 全てのタスクを取得
    $tasks = Task::all();
    
    // コレクションを配列に変換
    $tasksArray = $tasks->toArray();

    // 配列が空かどうかを判定
    if (empty($tasksArray)) {
        // タスクが一つもない場合の処理
        return view('tasks.index', ['message' => 'タスクはまだありません。']);
    }

    // タスクがある場合の処理
    return view('tasks.index', ['tasks' => $tasks]);
}

この方法でも空かどうか判定は出来ますが、配列に変換するという余計な処理が発生するため出来ればisEmpty()メソッドを使用するのが良いです。

まとめ

以上、Collectionオブジェクトが空かどうか判定する方法を4つご紹介しました。

メソッド名メリットデメリット
isEmpty()可読性が高い、シンプル、効率的
isNotEmpty()isEmpty()とほぼ同等、条件によって使い分ける
count() > 0直感的、要素数も同時に把握できるisEmpty()より若干冗長
toArray()通常の配列として扱いたい場合に便利余分な処理

色々と方法はありますがisEmpty()メソッドが直感的に分かりやすく、シンプルなので良いかと思います。
ただ他の方法も知識として知っていれば、それぞれを適切な場面で使えるので、きちんとメリットやデメリットを理解しておくことが大切だと思いました。
Laravelを学習し始めたばかりの方は参考にしてみてください。一緒に頑張っていきましょう!

それでは。


🏢 株式会社ハジメクリエイトについて

この記事は、 株式会社ハジメクリエイト のエンジニアが執筆しました。


💻 Webシステム開発のプロフェッショナル

私たちは、ビジネスの成長をサポートするため、 PHPを用いたオーダーメイドのシステム開発 を提供しています。
お客様一人ひとりのニーズに応じたカスタムシステムを、 企画から開発・運用まで一貫してサポート
さらに、 React Nativeを活用したiOS/Android対応のアプリ開発 も得意としています。

単に「作る」だけでなく、
課題の本質に向き合い、最適な解決策を提案する のがハジメクリエイトのスタイルです。


🧑‍💻 一緒に働く仲間を探しています!

株式会社ハジメクリエイトでは、 自ら考え行動できるエンジニア を募集しています。
「私はこれがしたい!」という想いを持つあなた、一緒にモノづくりを楽しみませんか?

  • 技術で人の役に立ちたい
  • 意見が通る小さなチームで働きたい
  • フロントエンドもバックエンドも、いろいろ挑戦してみたい
  • お客さんと一緒にプロジェクトを育てたい

そんな気持ちがある方なら、きっと居心地のいい環境だと思います。
正社員はもちろん、パートタイムでの参加も歓迎中! 柔軟な関わり方で、あなたらしく働いてください。

👉 採用情報を見る
👉 お問い合わせはこちら


ちょっとでも「この会社、気になるな」と思ったら、ぜひお気軽にご連絡ください📩
最後まで読んでいただきありがとうございました!

  • Laravel
  • PHP

この記事を書いた人

Morimoto

Programmer Morimoto

Web制作をメインに、最近はWeb開発にも携わるようになってきました。新しく学んだことやつまづいたことなどを書いていきます。three.jsを使った3Dアニメーションにも興味があります。

Morimotoの書いた記事一覧へ

ハジメクリエイトでは一緒に働く仲間を募集しています!

関連記事