У меня есть функция с именем siblings
, которая извлекает всех братьев и сестер пользователя.Добавление пользовательского атрибута eloquent в Laravel 5
select siblings(id) as `siblings` from users where id = 1
я могу получить доступ к функции в красноречив, как
User::where('id', 1)->first([DB::raw(siblings(id) as `siblings`)]->siblings;
Я хочу сделать доступный siblings
с помощью пользовательского атрибута.
Я добавил siblings
в $appends
массив
Я также создал getSiblingsAttribute
метод в моей User
модели, как
public function getSiblingsAttribute()
{
if (!$this->exists()) {
return [];
}
$siblings = User::where('idd', $this->id)
->first([DB::raw('siblings(id) AS `siblings`')])
->siblings;
return explode(',', $siblings);
}
Но это не работает, как $this->id
возвращается null
Моя таблица схема users(id, username,...)
, так ясно id
присутствует.
Есть ли способ, с помощью которого я могу связать функцию siblings
во время запроса db, а затем возвратить что-то вроде $this->siblings
от getSiblingsAttribute
. Если я могу связать siblings(id) as siblings
с запросом, выберите глобально, как и для областей с глобальным охватом.
Таким образом, мой код может быть просто
public function getSiblingsAttribute()
{
return $this->siblings;
}
Он должен быть атрибутом '$ this-> ['id']'. – user2094178