2017-03-01 10 views
0

私は、ページ付けやJSONレスポンスに表示さ取得する前にオブジェクトを変更したい、今の私のコードは次のようになります。アクセス各オブジェクトや改ページに情報を追加[CakePHPの3]

$this->paginate = [ 
    'conditions' => $this->getPaginationConditions(), 
    ]; 
$this->set('reservations', $this->paginate($this->Reservations)); 
$this->set('_serialize', ['reservations']); 

getPaginationConditions()ルックスこの

private function getPaginationConditions() 
{ 
    $conditions = ['Reservations.id_venue' => $this->Auth->user('id_venue_manager')]; 
    if ($date = $this->request->query('date')) { 
     $conditions['Reservations.date'] = $date; 
    } 
    if ($user = $this->request->query('id_user')) { 
     $conditions['Reservations.id_user'] = $user; 
    } 
    return $conditions; 
} 

のようにこれが返されます。

{ 
    "reservations": [ 
    { 
     "id_reservation": 139, 
     "reservation_type": "", 
     "date": "2017-09-04T00:00:00", 
     "time": "2017-03-01T10:00:00", 
     "id_venue": 1, 
     "id_user": 149, 
    }, 
    { 
     "id_reservation": 140, 
     "reservation_type": "", 
     "date": "2017-09-04T00:00:00", 
     "time": "2017-03-01T20:00:00", 
     "id_venue": 1, 
     "id_user": 149, 
    }, 
    [...] 

私は、各オブジェクトにアクセスしたいですページの前に私の条件に従って "ユーザー"フィールドを追加すると、私は自分のユーザーを見つける方法を知っていますが、ページング条件によって選択されるオブジェクトにアクセスする方法はわかりません。次のようになります。

{ 
    "reservations": [ 
    { 
     "id_reservation": 139, 
     "reservation_type": "", 
     "date": "2017-09-04T00:00:00", 
     "time": "2017-03-01T10:00:00", 
     "id_venue": 1, 
     "id_user": 149, 
     "user" : { 
     "firstname" : "test", 
     "lastname" : "test", 
     "id_user" : "149", 
     [...] 
     } 
    }, 
    { 
     "id_reservation": 140, 
     "reservation_type": "", 
     "date": "2017-09-04T00:00:00", 
     "time": "2017-03-01T20:00:00", 
     "id_venue": 1, 
     "id_user": 149, 
     "user" : { 
     "firstname" : "test", 
     "lastname" : "test", 
     "id_user" : "149", 
     [...] 
     } 
    }, 
    [...] 

ありがとうございます!

+0

あなたは変換の命名をCakePHPに従ってください(https://book.cakephp.org/3.0/en/intro/conventions.html)[変換を命名] CakePHPのが、次のされていないようです。それはより生産的に生成するのに役立ちます – tarikul05

答えて

0

'contain'インデックスを$this->paginateに追加して、追加するモデル関係を渡すことができます。

<?php 
    $this->paginate = [ 
     'conditions' => $this->getPaginationConditions(), 
     'contain' => ['User'] 
    ]; 
?> 
+0

私の協会を調整した後、私はこの仕事をしてくれました、ありがとう! –

関連する問題