【问题标题】:Yii2 : Add ID tag to gridviewYii2 : 添加 ID 标签到 gridview
【发布时间】:2017-11-19 08:44:52
【问题描述】:

我在控制器中有createCommand

  $receipts=new receipts();
     $query1 = new Query;
     $query1  ->select(['price','date','id']) 
         ->from('paymentreceipts')
         ->join(  'INNER JOIN','patient','patient.patient_id =paymentreceipts.patient_id' )
         ->where('patient.patient_id=:id', array(':id'=>$id))      
         ->orderby ('paymentreceipts.date');
     $command1 = $query1->createCommand();
     $dataProvider1 = $command1->queryAll();  
     $gridViewDataProvider3 = new \yii\data\ArrayDataProvider([
     'allModels' => $dataProvider1,
     'sort' => [
     'attributes' => ['price','reg_date','id'],
     ],
     ]);

  return $this->render('view', [
        'model' => $this->findModel($id),
         'gridViewDataProvider2' => $gridViewDataProvider2,
    ]);

在 view.php 中

  <?= 
    GridView::widget([
      'dataProvider' => $gridViewDataProvider2,
      //  'pjax'=>true,    
      'summary'=>'',
      'showFooter' => true,
      'columns' => [
          ['label' => 'رقم الخدمة',
          'attribute' => 'id',
          ],

          [
          //  'label'=>'url',
            'format' => 'raw',
            'value'=>function ($data) {
            return Html::a('$data->date','#',['class' => 'receipts','id'=>'id']);
          },
          ],           

          ]

]) ?>

我需要的是:将'attribute' =&gt; 'id' 编号中的 id 添加到我在此处创建的链接['class' =&gt; 'receipts','id'=&gt;'id']);

我使用了'id'=&gt; $gridViewDataProvider2-&gt;id,但它不起作用!

我的英文不好,所以可能我的问题不清楚。

【问题讨论】:

  • 试试:'id'=> $data->id
  • 不行,Trying to get property of non-object
  • 和 $model->id ?
  • view.php 中有另一个使用 $model 的网格视图...所以它不会给我真实的 Id

标签: php gridview yii2-advanced-app


【解决方案1】:

JOIN 语句是您没有收到“id”的原因。因为您的两个表都有“id”列,因此阅读它变得不明确。像下面这样改变你的查询,

  $query1  ->select(['price','date','id as receiptId']) 
     ->from('paymentreceipts')
     ->join(  'INNER JOIN','patient','patient.patient_id =paymentreceipts.patient_id' )
     ->where('patient.patient_id=:id', array(':id'=>$id))      
     ->orderby ('paymentreceipts.date');
 $command1 = $query1->createCommand();

然后您可以制作如下所示的链接。

   return Html::a('$data->date','#',['class' => 'receipts','id'=>$data->receiptId]);

【讨论】:

  • Trying to get property of non-object 问题是一样的
猜你喜欢
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-05
相关资源
最近更新 更多