2017-11-19 7 views
0

IましコントローラでcreateCommandYii2:IDタグは、GridViewコントロールに追加

$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']); 
      }, 
      ],   

      ] 

])>

私がされて必要なもの:?IDを追加'attribute' => 'id'ここに作成したリンクの番号['class' => 'receipts','id'=>'id']);

i 'id'=> $gridViewDataProvider2->idしかしそれは動作しません!

私の英語は良くないので、私の質問は明確ではないかもしれません。

+0

試してみてください。 'ID' => $データ - > ID –

+0

それは '非object' –

+0

のプロパティを取得しようとすると、$モデル - > ID、動作しませんか? –

答えて

0

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]); 
+0

'非オブジェクトのプロパティを取得しようとすると'問題は同じです –

関連する問題