php – 如何在yii2中显示网格视图中另一个表的数据?
发布时间:2020-12-13 15:59:50 所属栏目:PHP教程 来源:网络整理
导读:在siteController中,我编写查询并将dataProvider数组传递给index.php以显示包含在表格中.在index.php中,我想显示成员名而不是memberID.为此,我编写了内部查询,并成功在命令提示符下成功运行.这里我无法打印名字而不是’member id’ public function actionIn
在siteController中,我编写查询并将dataProvider数组传递给index.php以显示包含在表格中.在index.php中,我想显示成员名而不是memberID.为此,我编写了内部查询,并成功在命令提示符下成功运行.这里我无法打印名字而不是’member id’
public function actionIndex() { $query = new yiidbQuery; $query->select(['member.firstName','complaint.practiceCode','complaint.id','complaint.description','member.firstName']) ->from(['complaint']) ->innerJoin(['member','complaint.memberID = member.id']) ->groupBy(['complaint.id']) ->where(['complaint.deleted' => 'N']); $query->createCommand(); 这里我通过创建$dataProvider4来传递数据,但是我无法设置firstName而不是memberID的值. $dataProvider4= new ActiveDataProvider([ 'query' => $query,'pagination' => false,]); return $this->render('index',[ 'dataProvider4'=>$dataProvider4]); <?= GridView::widget([ 'dataProvider'=>$dataProvider4,'summary'=>'Total'.' <b>'.$complaintModel.'</b> '.'Complaints','columns' => [ ['class' => 'yiigridSerialColumn'],'practiceCode',// 'memberID','description','status',],]); ?> 我通过dataProvider传递数据. 解决方法
由于您使用的是强大的框架,因此您最好让框架为您执行复杂的操作,而不是尝试编写自己的查询.这就是Yii的设计目标.在你的行动中尝试这一点.
public function actionIndex() { $query = Member::find()-> ->select(['firstName',complaint.practiceCode',complaint.id','complaint.description']) ->groupBy(['complaint.id']) ->joinWith('complaints')//Tells Yii to use the complains relation that we define below. By default it is an inner join ->where(['complaint.deleted' => 'N']); $dataProvider= new ActiveDataProvider([ 'query' => $query,]); return $this->render('index',[ 'dataProvider4'=>$dataProvider]); 在您的模型中,您需要定义可在查询中使用的关系; public function getComplaints(){ return $this->hasMany(Complaints::className(),'memberID' => 'id'); } 这很有用,因为它可以让您在不必编写自己的查询的情况下获得投诉. Yii将为您整理所有列名,并编写查询. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |