无法从gridview访问yii2活动数据提供程序



每个人这是我的函数,返回数据提供程序到gridview。

public function search($params)
    {

        $query = EventOrganizer::find()
        ->where(['event.approve' => 0])
        ->groupBy(['event.eventID']);
        // add conditions that should always apply here
        $query ->joinWith(['event', 'organizer']);
        $dataProvider = new ActiveDataProvider([
            'query' => $query,
        ]);
        $this->load($params);
             $query->select(['event.eventID','event.title','event.startDate','event.startTime','event.endDate','event.endTime',
           'event.photo','event.description','event.location','event.approve',
           "GROUP_CONCAT(CONCAT(`organizer`.`name`," ", `organizer`.`organizerID`)) AS Name"])
            ->andFilterWhere(['like', 'event.eventID', $this->eventID])
            ->andFilterWhere(['like', 'organizer.organizerID', $this->organizerID]);

        return $dataProvider;
    }

下面是我在gridview中的部分代码。当我试图访问数据提供程序内部的数据时,我无法访问我使用group_concat的列。

 [
      'label'=> 'End Time',
      'attribute' => 'GROUP_CONCAT(CONCAT(`organizer`.`name`," ", `organizer`.`organizerID`)) AS Name',
],

我能够访问其他数据如下:

 [
          'label'=> 'End Date',
          'attribute' => 'event.endDate',
    ],

这证明我的数据提供程序包含数据,我已经尝试了几种方法,但我仍然无法访问它。有人能帮我一下吗?

如果你想在DB上做一些操作,并在gridview上显示结果,你必须首先在你的模型上定义一个变量,并在gridview上使用它。在gridview中使用SQL查询是不正确的。长话短说,您可以轻松地在模型中定义变量和getter方法,如下所示:

<?php
use yiidbActiveRecord;
class YourModel extends ActiveRecord
{
    public $organizerName;
    // Some AR Model codes go here!
    public function getOrganizerName()
    {
        /** 
         * Suppose you have a 1-1 relation which is called getOrganization
         * and you retrive your desired data about the organization from
         * that
         */
        return $this->organization->name 
               . ' ('
               . $this->organization->id
               . ')';
    }
}

现在你可以在你的模型中使用organizerName属性:

[
      'label'=> 'End Time',
      'attribute' => 'organizerName',
],

请注意,如果您想做一些事情,如排序或添加一个搜索框,您必须为这个字段做一些额外的工作。

最新更新