Мне было интересно, как всегда добавлять некоторые данные в модель Eloquent без необходимости запрашивать их, например, при получении базы данных формы сообщений. Я хочу добавить информацию о пользователе для каждого пользователя следующим образом:
{
id: 1
title: "My Post Title"body: "Some text"created_at: "2-28-2016"user:{
id: 1,
name: "john smith",
email: "[email protected]"}
}
После некоторого поиска я обнаружил, что вам просто нужно добавить атрибут, который вы хотите $appends
массив в вашей красноречивой модели:
protected $appends = ['user'];
Обновить: Если атрибут существует в базе данных, вы можете просто использовать
protected $with= ['user'];
в соответствии с Дэвид Баркер комментарий ниже
Затем создайте Accessor как:
public function getUserAttribute()
{
return $this->user();
}
Таким образом, вы всегда будете иметь объект user для каждого поста, доступный как:
{
id: 1
title: "My Post Title"body: "Some text"created_at: "2-28-2016"user:{
id: 1,
name: "john smith",
email: "[email protected]"}
}
Других решений пока нет …