У меня есть модель (запрос), которая возвращает базу объектов клиента по его идентификатору, она получает идентификатор с другого компьютера, поэтому я хочу обработать несуществующие значения (т. Е. Идентификатор, который не существует, возвращая eloquent как ноль).
так для:
public function customer()
{
return $this->belongsTo('App\Customer', 'site_user');
}
Я пробовал следующее:
public function getSiteUserAttribute()
{
if (!$this->relationLoaded('customer')) {
$this->load('customer');
}
return $this->getRelation('customer') ?: $this->nullCustomer();
}
и nullCustomer()
:
private function nullCustomer()
{
$nonExist = 'non-exist-customer';
$siteUser = new \Illuminate\Support\Collection;
$siteUser->first_name = $nonExist;
$siteUser->last_name = $nonExist;
$siteUser->email = $nonExist;
return $siteUser;
}
ПокаLaravel возвращает ошибку, которую я не могу понять:
Undefined property: App\Request::$site_user (View: /../../index.blade.php)`
она явно связана с getSiteUserAttribute()
, которая экстраполирует site_user
, но я не могу понять, в чем проблема.
Я могу isset()
для каждого места, где это отношение называется, но я работаю с умной структурой, поэтому сомневаюсь, что это будет наилучшей практикой.
Просто повторюсь, я пытаюсьне обрабатывать нуль belongsTo()
, который не нарушил бы представление.