2013-04-23 1 views
0

Предположим, у меня 3 модели.CakePHP 2 Пожалуйста, помогите с модельной ассоциацией

  1. Стоматолог (Пользователь с ролью = 'D')
  2. Заявитель (Более подробная информация о каждом пользователе, такие как адрес, телефон, interested_position и т.д.)
  3. положение (в заявителей таблице I только магазин position_id, вот где описание)

    класс Dentist extends AppModel { public $ hasOne = 'Заявитель'; }

    класс Заявитель расширяет AppModel { public $ belongsTo = array ('Dentists', 'Position'); }

    класс Положение распространяется AppModel { }

У меня есть проблема в представлении Стоматологов, когда я использовать $this->Dentist->find('all'); в моем DentistsController, потому что SQL так же, как

select * 
from dentists left outer join applicants 
    on dentists.id = applicants.dentist_id 

Нет больше похоже не осталось внешние позиции присоединения ...

Но если я использую $this->Applicant->find('all'); в моих ApplicantsContr oller, я получил левые позиции внешнего соединения ...

Как установить ассоциацию модели, чтобы получить заявку на соединение к «позициям позиции» из моего DentistsController.

Спасибо всем.

ответ

0
Your models should have following association 
Positions model: 

/** 
* hasMany associations 
* 
* @var array 
*/ 
    public $hasMany = array(
     'Applicant' => array(
      'className' => 'Applicant', 
      'foreignKey' => 'position_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     ), 


    ); 


Application model: 


/** 
* belongsTo associations 
* 
* @var array 
*/ 
    public $belongsTo = array(
     'Dentist' => array(
      'className' => 'Dentist', 
      'foreignKey' => 'dentist_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ), 

    ); 



/** 
* hasMany associations 
* 
* @var array 
*/ 
    public $hasMany = array(
     'Dentist' => array(
      'className' => 'Dentist', 
      'foreignKey' => 'application_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     ), 


    ); 


Dentist model: 


/** 
* belongsTo associations 
* 
* @var array 
*/ 
    public $belongsTo = array(
     'Applicant' => array(
      'className' => 'Applicant', 
      'foreignKey' => 'applicant_id', 
      'conditions' => '', 
      'fields' => '', 
      'order' => '' 
     ), 

    ); 



/** 
* hasMany associations 
* 
* @var array 
*/ 
    public $hasMany = array(
     'Applicant' => array(
      'className' => 'Applicant', 
      'foreignKey' => 'dentist_id', 
      'dependent' => false, 
      'conditions' => '', 
      'fields' => '', 
      'order' => '', 
      'limit' => '', 
      'offset' => '', 
      'exclusive' => '', 
      'finderQuery' => '', 
      'counterQuery' => '' 
     ), 


    );