Поскольку team_id необязательно в моей таблице билетов, я установил его как nullable, но по-прежнему является внешним ключом для таблицы команд, но когда я пытаюсь получить несколько строк билета с отношением к таблицы команд, билеты, у которых есть команда team_id, возвращаются правильно, но билеты, у которых есть null team_id, разрывают программу и возвращают эту ошибку «Попытка получить свойство не-объекта».Laravel отношения null внешний ключ выборки
миграции:
Schema::create('tickets', function (Blueprint $table) {
$table->integer('team_id')->unsigned()->nullable();
});
Schema::table('tickets', function (Blueprint $table) {
$table->foreign('team_id')
->references('id')
->on('teams');
});
модель Билет
public function team()
{
return $this->belongsTo('App\Models\Team', 'team_id', 'id');
}
модель команды
public function tickets()
{
return $this->hasMany('App\Models\Ticket', 'id', 'team_id');
}
Контроллер билетов
$tickets = Ticket::orderBy('created_at', 'desc')
->take(10)
->get();
foreach ($tickets as $ticket) {
var_dump($ticket->team->name);
}
Спасибо за идеи, Исеть должна удалить ты, сог технически $ ticket-> команда установлена, она просто имела значение NULL. –
Я не был уверен, что laravel вернул что-либо, если не было никакого отношения, принял изменение. Рад, что он подтолкнул вас в правильном направлении. – DavidT