質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

1回答

9483閲覧

cakephp3でDBから取得した情報がnullだった場合を判定する効率コード

yajin

総合スコア75

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

1クリップ

投稿2016/11/11 06:16

レコードをデータベースから取得して並べていく際にオブジェクトの内容が空だった場合、情報なし的なエラーを出す場合の効率的なコードを考えています。debug($articles)をcontrollerに書いてみたところ、以下のように出力されます。

htmlの結果

html

1 2object(Cake\ORM\ResultSet) { 3 4 'items' => [] 5}

そこで、
view.ctp

PHP

1 2if($articles->items == null){ 3echo '情報なし'; 4}

これではだめでしょうか?エラーがでます。

foreachで回して判定するべきなのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

debugで出力される内容は必ずしもオブジェクトの変数とは一致しません。
itemsという変数は実際には存在せず、Cakeがdebug出力用に定義しているものです。
ResultSetオブジェクトにcount()という関数があるのでこれを使ったほうがよさそうです。

php

1if(!$articles->count()){ 2 echo '情報なし'; 3}

(さらに追加)
さらに調べてみたところ、もっと便利なisEmpty()関数がありました...。

php

1if($articles->isEmpty()){ 2 echo '情報なし'; 3}

参考:ResultSetのAPIドキュメント

投稿2016/11/11 06:45

編集2016/11/11 09:02
popobot

総合スコア6586

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yajin

2016/11/11 07:29

ご返信ありがとうございます。 うまくいきませんでした。 件数取得するべきなのでしょうか。
popobot

2016/11/11 07:49

findでall()やtoArray()していないからとかかもしれません。 findのコードとかあれば原因がわかるかもです。
popobot

2016/11/11 08:07

すみません。findでtoArray()しないとうまくいかないっぽいですね。
yajin

2016/11/11 08:40

無事表示されました。 これはものすごく便利ですね。 ありがとうございます。
popobot

2016/11/11 08:55

isEmpty()関数というのもあるようなので、回答に追記しておきました。 自分も知らなかったので勉強になりました!! ※普段扱いに困るとtoArray()することが多いのですが、ResultSetのまま使ったほうが便利そうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問