2010-01-31 3 views
0

내가 쓰고있는 응용 프로그램의 REST API로 작동하도록 CakePHP를 구성하려고합니다. 누군가가 /users/1.xml를 방문 할 때, 수익을 얻는 데이터가 사용자에 가지고 '요리'의 단지 목록입니다 있도록CakePHP 관계 질문

dishes { 
id, 
name, 
description 
} 

users { 
id, 
name, 
email 
} 

dishes_users { 
id, 
user_id, 
dish_id 
} 

내가 그것을 좋아하는 것 :

나는 3 개 테이블이 'dishes_users'테이블은 사용자 나 요리사 사용자가 요리 테이블의 ID, 이름 및 설명 만 있으면 아무 것도 원하지 않습니다.

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

이 현재 i는 사용자 모델을 사용하고 관계 : 결국

XML 구조가되어야하는 컨트롤러

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')); 
} 

이것은 내가 원하는 것을 제공하지만 나에게 내가 원하지 않는 많은 것들을 제공합니다. 내가 필요한 것은 요리 목록 뿐이다.

어떤 도움을 주셔서 감사합니다.

답변

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에서, 주어진 사용자와 관련된 유일의 접시 데이터를 끌어해야한다. 나는 그걸 기억에서 덜컥 덜컥 울 렸지만, 네가 필요로하는 곳에서 너를 이웃에 데려다 줄 수있다.