Laravel, не выводит модель один к одному?

Столкнулся с таким моментом Есть модель Ticket id user_id status_id created_at updated_at

Есть модель Claimant id ticket_id info created_at updated_at

В моделе Ticket есть метод

public function claimant()
{
    return $this->hasOne(Claimant::class);
}

Выполняю код в тинкере

$ticket = App\Ticket::find(46)
$ticket->claimant->info

Выводит как положено info из Claimant А если выполняю запрос

$tickets = App\Ticket::with(['claimant:id,info'])
                  ->where('user_id',704)
                  ->where('status_id', '>', 0)->get();

То выводит

App\Ticket {#917
     id: 46,
     user_id: 704,
     status_id: 1,
     created_at: "2020-04-16 02:03:47",
     updated_at: "2020-04-16 02:03:47",
     claimant: null,
   }

Подскажите, что я делаю не так? Почему отношение claimant null?


Ответы (1 шт):

Автор решения: betplix

Разобрался. Допустил ошибку при составлении запроса, Нужно было сделать так:

$tickets = App\Ticket::with(['claimant:id,ticket_id,info'])
                  ->where('user_id',704)
                  ->where('status_id', '>', 0)->get();

Оказалось так, что в выборке должно присутствовать связующее поле, в моем случае ticket_id

→ Ссылка