2016-11-23 9 views
0

私はいくつかの期間と各期間の最大日付と日数を選択するクエリ関数を作成しました。CakePHP 3 Containsは多次元配列を返します

$periods = $this->Periods->find('all')->contain([ 
    'Days' => function($q) { 
     return $q->select([ 
      'Days.period_id', 
      'max_date' => $q->func()->max('Days.date'), 
      'count_days' => $q->func()->count('Days.period_id') 
     ])->group(['Days.period_id']); 
    } 
]); 

Iデイズデバッグする場合、それはこのう:

[ 
    (int) 0 => object(Cake\ORM\Entity) { 
     'period_id' => (int) 1, 
     'max_date' => '2016-11-21', 
     'count_days' => (int) 2, 
     '[new]' => false, 
     '[accessible]' => [ 
      '*' => true 
     ], 
     '[dirty]' => [], 
     '[original]' => [], 
     '[virtual]' => [], 
     '[errors]' => [], 
     '[invalid]' => [], 
     '[repository]' => 'Periods.Days' 
    } 
    ] 

今私の問題は、私は日使用するとき、それは多次元配列であるので、私はなかれ$period['days'][0]['max_date']のように番号を使用しなければならないということです。どうすれば$period['days'][max_date]を使うことができますか?

答えて

1

すべてのレコードを取得しているので、正しい形式でレコードが送信されています。 その配列に複数のレコードは必要ありませんか?そうであれば、単一の行だけを取り出すことができます。それ以外の場合は、foreachループを使用できます。

foreach($periods as $p) { 
    echo $p->max_date; 
    echo $p->count_days; 
}