2014-10-13 1 views
0

Может быть, я что-то отсутствует очевидный здесь, но если я делаю:Можно ли еще использовать Laravel 5 Accessors для доступа нескольких атрибутов

public function getName() 
{ 
    return $this->first_name . ' ' . $this->last_name; 
} 

, а затем на мой взгляд, сделать

$user->name 

Я ничего не получаю. Но если я забегу

$user->getName() 

Тогда он работает как ожидалось. Невозможно создать аксессуар, который обращается к нескольким атрибутам?

ответ

1

Вы должны использовать что-то подобное в вашей User модели как accesor:

public function getNameAttribute($value) 
{ 
    return $this->first_name . ' ' . $this->last_name; 
} 

Таким образом, вы можете использовать $user->name свойство. Формат имени - getPropertyAttribute.

+3

Ahh, я предположил, что я застрял, используя значение $, передаваемое из атрибута, и не мог видеть, что значение $ присутствует, если я вызвал метод getNameAttribute. – alexleonard

3

Ваша функция должна должна иметь имя getNameAttribute и не getName, чтобы заставить его работать, как аксессор (docs reference) и использовать для доступа к $user->name результату вашего аксессора. Теперь вы создали стандартную функцию, и если вы хотите ее запустить, вам нужно запустить функцию, как и во всех стандартных функциях PHP.

+0

upvote для ссылки :) – rolfk