Cakephp 3.6 содержит

У меня небольшая проблема с проектом Cakephp.
У меня есть эта функция get в StudentController для просмотра действий.

$student = $this->Students->get($id, [
'contain' => ['Courses', 'LessonPresences', 'StudentNotes', 'StudentPayments']
]);

StudentNotes добавляются пользователями. С содержанием я получаю StudentNotes с идентификатором пользователя, который добавил эту заметку. Как я могу получить имя этого пользователя?

Student {#711 ▼
+"id": 1
+"name": "John"+"lastname": "Doe"+"email": "johndoe@gmail.com"+"phone": "111222333"+"address": "Brown Street"+"add_date": FrozenTime @1531866000 {#347 ▶}
+"sign_date": FrozenDate @1531699200 {#350 ▶}
+"theory_count": 65
+"course_end": null
+"course_id": 1
+"student_notes": array:1 [▼
0 => StudentNote {#607 ▼
+"id": 1
+"s_content": "Test student's note"+"add_date": FrozenTime @1532677715 {#606 ▶}
+"student_id": 1
+"add_user_id": 1

У меня есть «add_user_id», который равен «1». Как я могу получить имя этого пользователя?
Есть принадлежит ассоциация в StudentNotesTable

$this->belongsTo('Users', [
'foreignKey' => 'add_user_id',
'joinType' => 'INNER'
]);

0

Решение

просто добавь 'Users' к массиву содержимого. Вы можете сделать это разными способами, все перечисленные ниже эквивалентны

Использование точечных обозначений

 'contain' => [
'Courses',
'LessonPresences',
'StudentNotes',
'StudentNotes.Users',
'StudentPayments',
]

Используя массив

 'contain' => [
'Courses',
'LessonPresences',
'StudentNotes' => ['contain' => ['Users']],
'StudentPayments',
]

Использование вызываемого

 'contain' => [
'Courses',
'LessonPresences',
'StudentNotes' => function ($q) {
return $q->contain(['Users']);
},
'StudentPayments',
]
0

Другие решения

Других решений пока нет …