2016-10-08 17 views
1

でYii2次のように私は、ビュー内の典型的なリストビューウィジェットを持っている:Versesモデルの最初と最後の項目のListView

public function actionView($id)   
    { 
     $model = $this->findModel($id); 
     $dataProvider = new \yii\data\ActiveDataProvider(['query' => \app\models\Verses::find()->where(['sura_id' =>$id])->with('sura')]);   
     return $this->render('view', [ 
      'model' => $model, 
      'dataProvider' => $dataProvider, 
     ]); 
    } 

ビューでリストがレンダリングされ、ListViewコントロールのページャも利用可能です。

私は、ページのタイトルにいくつかの詳細を追加したいです。これらの詳細は、リストにレンダリングされたVersesモデルの最初と最後のレコードのデータです。

私は次のようにビューの最初と最後のレコードを取得するために min()max() PHPの関数を使用しようとしました

$min = min($model->verses); 
echo $min->verse_id; 

しかし、それは現在のページャーページレスに関する究極の最初のレコードを返します。 。つまり、リストの最初の項目の値はverse_idではありません。

リストビューの、最初の最後、あるいは特定のn番目の項目を取得する方法はありますか?

答えて

1

あなたは、単に試してみてください:

$models = $dataProvider->getModels(); 
$first = reset($models); 
$last = end($models); 

resetendについて詳しくは、こちらをご覧ください。

1

あなたがfirtsと最後

public function actionView($id)   
    { 
     $model = $this->findModel($id); 
     $dataProvider = new \yii\data\ActiveDataProvider(['query' => \app\models\Verses::find()->where(['sura_id' =>$id])->with('sura')]); 


     $first = $dataProvider['models'][0]; 
     $last = $dataProvider['models'][$dataProvide['totalCount']-1]; 

を取得したり、あなたが

 $myModels = $dataProvider->gestModels(); 
     $first = myModels[0]; 
     $last = myModels[$dataProvide['totalCount']-1]; 

を使用することができますし、ページのためにあなたの代わりに、総カウント数のカウントに使用できるのdataProviderのモデル・アレイにアクセスすることができました

 return $this->render('view', [ 
      'model' => $model, 
      'dataProvider' => $dataProvider, 
     ]); 
    } 
+0

素晴らしいですが、ページングでは、 'getTotalCount()'は 'getCount()'に置き換えられ、モデルは 'getModels()'によって次のように取得されます: '$ s = $ dataProvider-> getModels(); $ start = $ s [0] - > verse_id; $ end = $ dataProvider-> getCount() - 1 + $ start; '。 [** Refrence **] – SaidbakR

+0

@seems ..答えを更新しました。 – scaisEdge

+0

'totalCount'が返されます現在のページに関係なく、モデルのレコードの合計数。ここで 'getCount'を使うのは正しいです。 – SaidbakR

関連する問題