我正在尝试将CakePHP配置为我正在编写的应用程序的REST API。
我有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'));
}这给了我想要的东西,但也给了我很多我不想要的东西。我只需要一份菜品清单。
谢谢你的帮助,我都快疯了。
发布于 2010-02-01 09:53:43
尝试限制一下作用域。您没有提到要在其中执行此工作的控制器,但看起来它不是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中提取与给定用户相关的dish数据。我有点记不住了,但它可能会让你找到你需要的东西。
https://stackoverflow.com/questions/2173724
复制相似问题