Не знаете, как получить информацию с RightJoin на CakePHP 3.2

  • Версия CakePHP: 3.2
  • Платформа и цель: Wamp, MySQq, Google Chrome

Что я сделал

Правое объединение двух таблиц в одном контроллере. Я пытаюсь получить информацию и не могу

$query = $this->Schedules->find('all')
->rightJoin(['Sessions'=> 'sessions'], ['Sessions.id is not null'])
->select(['Sessions.specialist_id'])
->where(['Sessions.id ='=>$session])

foreach ($query as $sp) {
if(!empty($sp)){
$specialist=$sp->Sessions->specialist_id;

Ожидаемое поведение

Получить идентификатор специалиста

Фактическое поведение

Я не могу получить идентификатор специалиста

Больше информации

1 Я уже пробовал с $specialist=$sp->specialist_id; и ничего не случилось
2 С debug ($sp);die(); это то, что я получил

object(App\Model\Entity\Schedule) {

'Sessions' => [
'specialist_id' => 'a7f6d5b2-b0f3-4a55-b6ce-41d393e80d12'
],
'[new]' => false,
'[accessible]' => [
'*' => true
],
'[dirty]' => [],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'Schedules'

}

0

Решение

specialist_id принадлежит Sessionsтак что вам нужно получить к нему доступ через этот ключ, т.е.

$sp->Sessions['specialist_id']

или же

$sp['Sessions']['specialist_id']

или даже

$sp->get('Sessions')['specialist_id']

… оооооо, один раз эта особенность делает это в ядро

$sp->get('Sessions.specialist_id')

Это довольно простой материал, но, возможно, документам будет полезен пример того, как получить доступ к вложенным данным, включая такие, которые представляют собой смесь объектов и массивов.

Поваренная книга> Доступ к базе данных & ORM> Объекты> Доступ к данным объекта

На заметку, AFAICT $sp никогда не должно быть пустым, либо есть результат, либо его нет.

1

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

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