お世話になります。
contain を含むコントローラーからビューへ値を渡す際の記述について疑問があり、質問させていただきます。
cakephp3 では、受け取ったidに関連する値を検索する場合、
cakephp3
1public function 関数名($id = null){ 2 3$渡す用の変数 = $this->該当テーブル->get($id, [ 4 'contain' => ['該当テーブルに付随するテーブル'] 5 ]);
このような記述をします。
例えば、Articlesテーブルという記事があり、特定の記事とそれを書いたユーザーを調べたい場合は、このような書き方をすると思います。
(以下コードは、イメージのために創作したものになります)
```cakephp3
$article = $this->Articles->get($id, [
'contain' => ['Users']
]);
これをビューに渡す時は、 ```cakephp3 $this->set('article', $article);
となります。
問題は、これをビューで表示するときになります。
ビュー側で、記事のユーザーを表示する場合、
cakephp3
1$article->user->name
と[Users]ではなく、[user]と単数になっています。
上記の記述は、 <?= $this->Form->create($article) ?>の中での記述です。
なぜ、[Users]テーブルが、ビュー使うときは、[user]になるのか教えてください。
一応確認のため、
cakephp3
1$article->users->name
と記述すると
Trying to get property of non-object
とエラー表示がでます。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。