Вы не можете напрямую запустить $user->settings()->something
.
Потому что, когда вы вызываете $user->settings()
, он просто возвращает Подсветить \ Database \ Eloquent \ Relations \ HasOne объект.
То есть это не объект модели, вам нужно взять объект модели и вызвать его атрибут следующим образом.
$user->settings()->first()->something;
Dynami c Свойства
Поскольку у вас есть отношение один к одному между User
и UserSettings
.
Если у вас есть индивидуальные отношения в вашей модели пользователя:
public function settings()
{
return $this->hasOne('App\Models\UserSettings', 'user_id', 'id');
}
Согласно Laravel do c
Как только связь определена, мы можем извлечь связанную запись, используя свойства dynamici c Eloquent . Свойства Dynami c позволяют получить доступ к методам отношений, как если бы они были свойствами, определенными в модели:
Eloquent автоматически загрузит для вас отношение и даже достаточно умен, чтобы знать, вызывать ли метод get (для отношений один-ко-многим) или первый (для отношений один-к-одному). Затем он будет доступен через свойство Dynami c с тем же именем, что и отношение.
Таким образом, вы можете использовать свойства dynamici c * 1045 eloquent * вот так:
$user->settings->something; // settings is the dynamic property of $user.