php - yii2如何在 GridView 中显示另一个表的数据?

标签 php gridview yii2

siteController 中,我编写查询并将 dataProvider 数组传递给 index.php 以在表格形式中显示包含。在 index.php 中,我想显示 member name 而不是 memberID。为此,我编写了内部查询,并在命令提示符下成功运行。这里我无法打印 first name 而不是 'member id'

      public function actionIndex()
      {              
     $query = new \yii\db\Query;
      $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'.'&nbsp<b>'.$complaintModel.'</b>&nbsp'.'Complaints',
    'columns' => [
       ['class' => 'yii\grid\SerialColumn'],
           '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,
    'pagination' => false,
]);

return $this->render('index', [
    'dataProvider4'=>$dataProvider]);

在您的模型中,您需要定义一个可以在查询中使用的关系;

public function getComplaints(){
    return $this->hasMany(Complaints::className(), 'memberID' => 'id');
}

这很有用,因为它使您无需编写自己的查询即可获得投诉。

Yii 会帮你整理出所有的列名,然后写出查询。

关于php - yii2如何在 GridView 中显示另一个表的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34452703/

相关文章:

javascript - 如何在 Sublime Text3 中调试 PHP、Javascript 代码?

c# - ora-00972 标识符太长 oracle 10g

javascript - 在内联脚本之后如何正确注册 yii2 项目中的 js 代码?

JavaScript 文件依赖于 Yii2 中的 JavaScript 代码块(用于 dojo 配置)

javascript - 当 php 变量值很大时,模态框不会打开

php - 迭代表列并获得结果

javascript - 需要 PHP foreach 问题中 jQuery slider 的帮助

ASP.net Gridview 项模板下拉列表

.net - GridView模式下的WPF ListView高亮问题

php - 如何在 Yii2 和 DbManager 中获取特定角色的用户?