如何在Yii2 gridview中连接两个表并获取值

时间:2015-11-09 09:47:47

标签: yii2

假设我有两个名字   我该如何使用多值?     像:

 [
        'label' => 'Name',
        'value' => 'messageTrigger.object_name'.'messageTrigger.object_name2',
 ]

给我一​​个错误的获取未知属性messageTrigger.object_name2

this是参考链接。

我必须对此做一些修改,但它给了我错误     希望有人帮助我这个

解决方案:

   [
    'label' => 'Name',
    'value' => function ($data)               
    {$data->messageTrigger.object_name.$data->messageTrigger.object_name2}
   ]

1 个答案:

答案 0 :(得分:1)

使用闭包:

'value' => function ($model) {
    /* @var $model YourModel */
    return $model->messageTrigger->object_name . $model->messageTrigger->object_name2;
},

最好将它包装在模型中的单独方法中,例如:

namespace app\models;

use yii\db\ActiveRecord;

class MessageTrigger extends ActiveRecord
{
    public function getFullObjectName()
    {
        return $this->object_name . $this->object_name2;
    }
}

然后你可以这样称呼它并且不关心内部实现:

'value' => function ($model) {
    /* @var $model YourModel */
    return $model->messageTrigger->getFullObjectName();
},

或者通过getter使用快捷方式:

'value' => 'messageTrigger.fullObjectName',

P.S。确保每个显示的模型都存在messageTrigger相关模型,否则添加检查是否存在。