每个人都是我的函数,它将数据提供者返回到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',
],
这证明我的数据提供者包含数据,我尝试了几种方法,但我仍然无法访问它。 谁可以帮我这个事?
答案 0 :(得分:0)
如果您想对数据库执行某些操作并在gridview
上显示结果,则必须先在模型上定义变量并在gridview
上使用该变量。在gridview
中使用SQL查询是不正确的。长话短说,您可以在模型中轻松定义变量和getter
方法,如下所示:
<?php
use yii\db\ActiveRecord;
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',
],
请注意,如果您想要排序或添加搜索框等内容,则必须为此字段执行一些额外的工作。