У меня есть следующие таблицы:
- пользователи: идентификатор, имя, ...
- курсы: идентификатор, имя, Knowledge_area_id, Educational_institution_id, ...
- users_courses: user_id, course_id, ...
- Knowledge_areas: ID, имя
- Educational_institutions: ID, имя, ...
Я сейчас пытаюсьотображать на экране пользователей некоторую информацию об этом пользователе, включая каждый курс, с которым он связан.Вот что я сейчас делаю:
Вкл. /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; ?>
Показывает каждый курс, с которым связан пользователь, с его именем, идентификатором области знаний, идентификатором учебного заведенияи описание курса.Однако я хотел бы показать название области знаний и название учебного заведения вместо их удостоверения личности.Я пытался сделать $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/..
и на контроллерах верно, есть идеи, что я мог бы сделать, чтобы это исправить?