私は次の表を持っています:
私は現在、ユーザーのビューに、関連するすべてのコースを含む、そのユーザーに関するいくつかの情報を表示しようとしています。これが私が現在していることです:
オン/Template/Users/view.ctp
:
<?php foreach($user->courses as $courses): ?>
<?= h($courses->name) ?>
<?= h($courses->knowledge_area_id) ?>
<?= h($courses->educational_institution_id ?>
<?= h($courses->description) ?>
<?php endforeach; ?>
これにより、ユーザーが関連付けられているすべてのコースが、その名前、ナレッジエリアID、教育機関ID、およびコースの説明とともに表示されます。ただし、IDの代わりに、知識領域の名前と教育機関の名前を表示したいと思います。私はやってみました$courses->knowledge_area->name
がname
、非オブジェクトからプロパティを取得しようとしていると表示されます。
私が試してみると、debug($courses)
次のようになります。
object(App\Model\Entity\Course) {
'id' => (int) 2,
'name' => 'course name',
'knowledge_area_id' => (int) 1,
'educational_institution_id' => (int) 1,
'description' => 'course description',
'_joinData' => object(Cake\ORM\Entity) {
...
}
実際に私が取得する必要があるとき
object(App\Model\Entity\Course) {
'id' => (int) 2,
'name' => 'course name',
'knowledge_area_id' => (int) 1,
'educational_institution_id' => (int) 1,
'description' => 'course description',
'educational_institution' => object(App\Model\Entity\EducationalInstitution) {
'id' => (int) 1,
'address_id' => (int) 1,
'name' => 'ed institution name',
'[new]' => false,
'[accessible]' => [
'address_id' => true,
'name' => true,
'address' => true,
'courses' => true,
'users' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'EducationalInstitutions'
},
'knowledge_area' => object(App\Model\Entity\KnowledgeArea) {
'id' => (int) 1,
'name' => 'knowledge area name',
'[new]' => false,
'[accessible]' => [
'name' => true,
'courses' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'KnowledgeAreas'
},
...
}
そうすれば$courses->knowledge_area->name
、基本的に/Template/Courses/view.ctp
はで起こることであるを使用することができ、各コースについて、それがどの知識領域に関連しているかを示すことができます。
私はケーキの規則に従ってい/Model/Table/..
て、コントローラー上とコントローラー上のすべてが正しいと想定しているファイルを再確認したので、これを修正するために何ができるかについてのアイデアはありますか?
メアリーのコメントの助けを借りて、私は自分のために働くわずかに異なる解決策を見つけることができました。
ユーザービューを編集しようとしていたので、ユーザーコントローラーのビュー機能に入り、変更しました
$user = $this->Users->get($id, [ 'contain' => ['Addresses', 'AccessLevels', 'Courses', 'EducationalInstitutions' ] ]);
に
$user = $this->Users->get($id, [ 'contain' => ['Addresses', 'AccessLevels', 'Courses', 'EducationalInstitutions', 'Courses.KnowledgeAreas', 'Courses.EducationalInstitutions' ] ]);
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加