質問

私が書いているアプリのためのREST APIとして動作するようにCakePHPを設定しようとしています。

私は3つのテーブルがあります:

dishes {
 id,
 name,
 description
}

users {
 id,
 name,
 email
}

dishes_users {
 id,
 user_id,
 dish_id
}

私は訪問が/users/1.xml誰か、リターンを取得したデータは、ユーザーが「dishes_users」テーブルに持っていることを「料理」のリストだけであるとき、私は、ユーザーから何かをしたいいけないように、それをしたいと思いますかそこにあるとdishes_users、単にID、名前、および食器テーブルの記述ます。

は、最終的にXML構造がなければならない。

<dishes>
 <dish id="1" name="whatever" description ="This is a description"/>
 <dish id="2" name="whatever" description="This is another description"/>
</dishes>

これは、現在私は、ユーザーのモデルに使用しています関係である。

var $hasAndBelongsToMany = array(
    "Dish" => array(
        'className' => 'Dish',
        'joinTable' => 'dishes_users',
        'foreignKey' => 'user_id',
        'associationForeignKey' => 'dish_id',
        'unique'                 => true,
        'conditions'             => '',
        'fields'                 => '',
        'order'                  => '',
        'limit'                  => '',
        'offset'                 => '',
        'finderQuery'            => '',
        'deleteQuery'            => '',
        'insertQuery'            => ''
));

私が持っているコントローラでます:

function view($id) {
    $dishes = $this->User->findAllById($id);
    $this->set(compact('beers'));
}

これは私が欲しいものを私に与えますが、それはまた、私が望んでいない多くのものを与えます。すべての私の必要性は、料理のリストです。

任意の助けのおかげで、これはナット私を運転されています。

役に立ちましたか?

解決

スコープを少し制限してください。あなたはこの仕事をやっているコントローラを言及していないが、それはそれ、のようになりますDishesControllerではありません。例えば、それはUsersControllerだ、もします:

$dishes = $this->User->Dish->find( 
  'all', 
  array(
    'fields'     => array( 'Dishes.*' ),
    'conditions' => array( 'DishesUsers.user_id' => $this->id ) // where $this is a user
  )
);

これは、UsersControllerから、特定のユーザーに関連する唯一の料理データを取得する必要があります。私は一種のメモリからオフにすることをガタガタ、それはどこかにあなたが必要なものの近くであなたを得ることができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top