0

作成しているアプリのRESTAPIとして機能するようにCakePHPを構成しようとしています。

私は3つのテーブルを持っています:

dishes {
 id,
 name,
 description
}

users {
 id,
 name,
 email
}

dishes_users {
 id,
 user_id,
 dish_id
}

誰かが/users/1.xmlにアクセスしたときに、返されるデータが、ユーザーが「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'));
}

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

助けてくれてありがとう、これは私を狂わせてきました。

4

1 に答える 1

1

スコープを少し制限してみてください。この作業を行っているコントローラーについては言及していませんが、そうではないよう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特定のユーザーに関連する料理データのみを取得する必要があります。私はそれを記憶から少しガタガタ鳴らしました、しかしそれはあなたがあなたが必要とするものの近くのどこかにあなたを連れて行くかもしれません。

于 2010-02-01T01:53:42.773 に答える