Laravel Eloquent: получить идентификатор модели изнутри функции getAttribute? - PullRequest
0 голосов
/ 09 сентября 2018

У меня есть модель, подобная следующей:

User extends Authenticatable 
{
   protected $appends = array('role');

   public function getRoleAttribute()
   {
      $role = DB::table('acl_user_has_roles')->where('user_id', $this->id)
                ->value('role');
      return $role;
   }
 }

Когда я пытаюсь ссылаться на этот атрибут foo следующим образом:

$user = User::find(1);
unset($user->id);   // This line causes the problem.
echo $user->role;

Я всегда получаю «ноль» вместо ожидаемого «Владелец».

Что мне здесь не хватало?

Я запускаю это в laravel 5.5.43.

В следующей записи упоминалась функция getKey (), которая не работала.

Проблема на самом деле вызвана чем-то другим, как описано в следующем medium post .

1 Ответ

0 голосов
/ 09 сентября 2018

На всякий случай, если кто-то столкнется с той же проблемой. Проблема вызвана другой строкой в ​​коде. Я сбросил $ user-> id перед эхо.

Проблема подробно описана в следующем среднем сообщении:

Будьте осторожны в использовании аксессоров, мутаторов и событий Laravel Eloquent

...