2015-05-26 2 views
2

Я хочу вывести данные модели с помощью настраиваемого атрибута, назначенного в функции в модели.Yii2, Model find() с пользовательским атрибутом

Пример)

class Test extends ActiveRecord 
{ 
    public static function tableName() 
    { 
     return '{{%test}}'; 
    } 

    public function rules() 
    { 
     //.... 
    } 

    public function attributeLabels() 
    { 
     return [ 
      'id' => 'ID', 
      'first_name' => 'First Name', 
      'last_name' => 'Last Name', 
     ]; 
    } 

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



Test::find().with('fullName') => it doesn't work 

Как я могу получить все данные с FULLNAME атрибутом?

ответ

3

с предназначено для relations. Вы можете получить фамилия, имя, отчество, только по телефону $model->fullName. Фактически fullName не является атрибутом, yii2 использует php's магический метод__get(), чтобы получить его от getFullName() метода.

Пример:

$model = Test::findOne($id); 
echo $model->fullName; 

Пример 2:

$models = Test::find()->all(); 
foreach($models as $model) 
{ 
    echo $model->fullName; 
} 

Также рассмотрим использование fields/extraFields методов, если вы хотите использовать свои модели as arrays вместо объектов

+0

Да я знаю, волшебный метод, но мне нужен список модели, коллекции. В этом случае мне нужно использовать цикл для ввода этого firstName? –

+0

да, вам нужно пройти через список, чтобы получить 'fullName' для каждой модели – Tony

+0

Я вижу, спасибо. –

Смежные вопросы