Правое объединение двух таблиц в одном контроллере. Я пытаюсь получить информацию и не могу
$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'
}
specialist_id
принадлежит Sessions
так что вам нужно получить к нему доступ через этот ключ, т.е.
$sp->Sessions['specialist_id']
или же
$sp['Sessions']['specialist_id']
или даже
$sp->get('Sessions')['specialist_id']
… оооооо, один раз эта особенность делает это в ядро
$sp->get('Sessions.specialist_id')
Это довольно простой материал, но, возможно, документам будет полезен пример того, как получить доступ к вложенным данным, включая такие, которые представляют собой смесь объектов и массивов.
Поваренная книга> Доступ к базе данных & ORM> Объекты> Доступ к данным объекта
На заметку, AFAICT $sp
никогда не должно быть пустым, либо есть результат, либо его нет.
Других решений пока нет …