0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NULL のはずなのに if 文が反応しない問題

Last updated at Posted at 2022-03-27

目次

1.NULL のはずなのに if 文が反応しない
2.Collection には isEmpty()を使う

Laravelを使ったブログサイト作成中に気になったことがあったのでアウトプットとして書いてみます。

1. NULL のはずなのに if 文が反応しない

ブログ記事一覧ページで、
記事にサムネイルがある場合はそれを表示し、無い場合は no images の写真をサムネイルとして表示する。
という機能を実装させるため、下記のようなコードを blade に書きました。

@if($post->images !== null)
    @foreach ($post->images as $image)
        ...省略
    @break
    @endforeach
@else
        ...省略
@endif

しかし、全ての記事が null ではない方の処理がされてしまいました。
サムネイル無しで投稿したブログも全て、
@if($post->images !== null)の処理をされてしまい、
本来表示されるはずの no images の写真が表示されず空白になってしまいました。
emptyisset などに変えても同様の結果でした。

2. Collection には isEmpty() を使う

おかしいなと思い、デバッグで $post->images の中身を確認してみたところ、

object(Illuminate\Database\Eloquent\Collection)#1280 .... とのこと。

どうやら Collection が入っているため、普通の配列とは違うようです。
色々調べた結果、Collectionのメソッド、isEmpty() を使うのが正しいみたいです!

というわけで修正後がこちら!!

@if($post->images->isNotEmpty())
    @foreach ($post->images as $image)
        ...省略
    @break
    @endforeach
@else
        ...省略
@endif

これで正しく動いてくれました!

デバッグって優秀.....そして Collection についてもっと勉強しよう。
今日のアウトプットはこれで以上です!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?