Как всегда добавлять атрибуты в модель Laravel Eloquent?

Мне было интересно, как всегда добавлять некоторые данные в модель Eloquent без необходимости запрашивать их, например, при получении базы данных формы сообщений. Я хочу добавить информацию о пользователе для каждого пользователя следующим образом:

{
id: 1
title: "My Post Title"body: "Some text"created_at: "2-28-2016"user:{
id: 1,
name: "john smith",
email: "[email protected]"}
}

8

Решение

После некоторого поиска я обнаружил, что вам просто нужно добавить атрибут, который вы хотите $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]"}
}
11

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]