Cakephp 3.6 содержит

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

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

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

Student {#711 ▼ 
+"id": 1
+"name": "John"
+"lastname": "Doe"
+"email": "[email protected]"
+"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 есть связь belongsTo.

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

person l3nox    schedule 27.07.2018    source источник


Ответы (1)


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

Использование точечной нотации

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

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

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

Использование callable

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