2010-11-24 5 views
0

저는 벽에 머리를 대고있어 정말 짜증나는 문제가 있습니다. 두 모델 클래스가 있습니다 :: 모델 재귀가 실패합니다.

class User extends AppModel { 
    var $name = 'User'; 
    var $hasMany = array(
     'Application' => array(
      'className' => 'Application', 
      'foreignKey' => 'user_id', 
      'dependent' => false, 
     ) 
    ); 
} 

class Application extends AppModel { 
    var $name = 'Application'; 
    var $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id', 
     ) 
    ); 
} 

응용 프로그램과 관련된 사용자 필드를 가져 오려고합니다.

$this->Applications->find(); 

상관없이 내가 $의 재귀, 그것은 여전히 ​​나에게 하나 개의 출력주고 설정 무엇을 : 나는 2 재귀 세트로 사용자 테이블에서 데이터를 가져 오는 경우, 다른 한편으로

Array 
(
    [Applications] => Array 
     (
      [id] => 1 
      [user_id] => 3 
      [datecreated] => 
      [status] => 
      [source] => 1 
     ) 

) 

을, 모든 사용자는 응용 프로그램과 함께 응용 프로그램과 관련된 사용자 데이터를 사용자와 관련된 응용 프로그램과 함께 사용합니다.

내가 원하는 무엇
Array 
(
    [0] => Array 
     (
      [User] => Array 
       (
        [id] => 3 
        [email] => [email protected] 
        [password] => hashstring 
        [socialsecurityno] => 21232134123 
        [role_id] => 3 
        [firstname] => Firstname 
        [lastname] => Lastname 
        [status] => 1 
       ) 

      [Application] => Array 
       (
        [0] => Array 
         (
          [id] => 1 
          [user_id] => 3 
          [datecreated] => 
          [status] => 
          [source] => 1 
          [User] => Array 
           (
            [id] => 3 
            [email] => [email protected] 
            [password] => hashstring 
            [socialsecurityno] => 21232134123 
            [role_id] => 3 
            [firstname] => Firstname 
            [lastname] => Lastname 
            [status] => 1 

            [Application] => Array 
             (
              [0] => Array 
               (
                [id] => 1 
                [user_id] => 3 
                [datecreated] => 
                [status] => 
                [source] => 1 
               ) 

             ) 

           ) 



         ) 

       ) 

     ) 
) 

, 응용 프로그램, 관련 사용자 정보에서 얻을 수 있습니다, 그리고 그것을 : 그것은 평범하고 단순하게 말하면, 여기에 내가 무엇을 얻을. 저는 한 명의 사용자가 많은 응용 프로그램을 가질 수 있지만 한 응용 프로그램에는 한 명의 사용자 만 있기 때문에 기술적으로 올바르지 않은 응용 프로그램과 사용자간에 habtm 관계를 생성하는 것에는 부족합니다.

지금은 응용 프로그램이 응용 프로그램 테이블의 user_id를 통해 사용자와 연결되어 있습니다. 응용 프로그램 테이블은 분명히 분명해야하지만 어쨌든 반드시 기록해야합니다.

어떤 종류의 도움도 감사 할 수 있습니다. 나는 사실상 아이디어가 없습니다. 그 첫 번째 응용 프로그램을 검색 왜

Model::find('first',array('limit'=>1)); 

이 설명 : Model::find 매개 변수없이 호출하면이 요청을 한 것처럼

답변

0

는 케이크를 취급합니다. 모든 응용 프로그램을 검색하려면에 전화를 수정

$this->Application->find('all'); 

Model::find 실제로, 모델의 recursive 설정을 무시하고 그 이유를 설명하지 않습니다, 나는하지 않는 한,이 문제를 재현하는 방법을 찾을 수 없습니다 재귀 수준 (예 : $this->Applications->recursive = 1;; "응용 프로그램"의 복수화에 유의하십시오)을 설정할 때 모델 이름을 타이핑 한 것처럼 바보 같은 것입니다.

희망이 도움이됩니다.

+0

두 개 이상의 응용 프로그램을 검색하는 데 문제가 없으므로 둘 이상을 가져 오는 데 매개 변수가 필요하다는 점을 충분히 알고 있습니다. 테스트 목적으로 데이터베이스에는 하나의 응용 프로그램 만 있습니다. 문제는 관련 모델을 검색하는 것입니다. 그러나 내가 잘못했을 가능성이있는 모든 시나리오를 살펴보고 내가 무엇인가를 찾을 수 있는지 확인합니다. – NeroS

관련 문제