Santosh
Santosh

Reputation: 381

How to join two tables and get values in Yii2 gridview

Suppose I have two name then How can I use the multiple value ? like:

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

It is giving me error for Getting unknown property messageTrigger.object_name2

this is reference link.

I have to do some modification on that but it giving me error hope some one help me out for this

Solution:

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

Upvotes: 1

Views: 422

Answers (1)

arogachev
arogachev

Reputation: 33548

Use a closure:

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

It's better to wrap it in separate method in model, for example:

namespace app\models;

use yii\db\ActiveRecord;

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

Then you can call it like this and don't care about internal implementation:

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

Or use a shortcut via getter:

'value' => 'messageTrigger.fullObjectName',

P.S. Make sure messageTrigger related model exists for every displayed model, otherwise add check for existence.

Upvotes: 1

Related Questions