CakePHP的关系问题
-
24-09-2019 - |
题
我想配置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'));
}
这给了我我想要的,但它也给了我很多东西,我不想。我需要的是菜肴列表中。
感谢您的帮助,这已被我发疯。
解决方案
尝试对范围的限制位。你没有提到你正在做这项工作的控制器,但它看起来像它的不是的的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
,拉只的关联于给定用户的数据盘。我有点慌乱,从存储断开,但也可能让你在某处你所需要的附近。
不隶属于 StackOverflow