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

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

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

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

2回答

2515閲覧

Laravel コレクションエラーが意味不明 「Trying to get property id of non-object」

退会済みユーザー

退会済みユーザー

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/06/29 02:57

下記コード、$v->idの箇所でエラー起きるんですがなぜ??
コレクションとは、アロー演算子+キー名で値取れると思うんですがこれは?
$v->idを$v['id']に変えるとエラー置きませんね。ですが腑に落ちません

$c1 = collect([ ['other_id' => 101], ['other_id' => 102], ['other_id' => 201], ]); $c2 = collect([ ['id' => 101], ['id' => 102], ['id' => 103], ['id' => 104], ]); foreach($c2 as $v){ $c3 = $c1->where('other_id', $v->id); }

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

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

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

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

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

guest

回答2

0

PHP

1$c2 = (object) collect([ 2 (object)['id' => 101], 3 (object)['id' => 102], 4 (object)['id' => 103], 5 (object)['id' => 104], 6])->all();

であればforeachループの中で$v->idでアクセスできますね。$vはcollectionのただの一要素ですので、文字列だったり数値だったり配列だったりオブジェクトだったり色々入ると思います。アロー演算子でアクセスできるのは中がオブジェクトの時だけかと思います。


追記

おそらくEloquentで返ってくるCollectionと混同されていたのだとおもいます。あれは連想配列ではなくModelオブジェクトが格納されているので、アロー演算子でアクセスできます。自分もアクセスできたような??と思っていたので、ちょっと調べたらこれと混同していたんだなと気付きました。

投稿2021/06/29 03:47

編集2021/06/29 03:55
AbeTakashi

総合スコア4556

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

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

0

コレクションとは、アロー演算子+キー名で値取れると思うんですが

コレクション自体にはいろいろメソッドが生えますが、要素は配列のまま、ということではないでしょうか。

「配列の配列」をコレクション化して得られるのが「配列のコレクション」だった、ということかと思います。

投稿2021/06/29 03:02

maisumakun

総合スコア145199

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問