@freelancer007

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,
       }

Подскажите, что я делаю не так?
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@freelancer007 Автор вопроса
Разобрался.
Допустил ошибку при составлении запроса,
Нужно было сделать так:
$tickets = App\Ticket::with(['claimant:id,ticket_id,info'])
                      ->where('user_id',704)
                      ->where('status_id', '>', 0)->get();

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

Войдите, чтобы написать ответ

Похожие вопросы