2013-02-11 5 views
2

У меня есть 2 стола, милиция и вторжения. Милиция может иметь много предписаний и предписаний только в одной милиции. Я установил их в моделях, но когда я нахожу все для милиции, запреты не вытаскиваются.cakePHP 2.0 Данные ассоциированных моделей не получены

Ополчения модель

class Militia extends AppModel { 
    public $belongsTo = array(
     'User' => array(
      'className' => 'User', 
      'foreignKey' => 'user_id' 
     ) 
    ); 

    public $hasMany = array(
     'Injunction' => array(
      'className'  => 'Injunction', 
      'foreignKey' => 'militia_id' 
      //'conditions' => array("not" => array('Injunction.removed' => null)) 
     ) 
    ); 
} 

Запреты модель

class Injunction extends AppModel { 
    public $belongsTo = array(
     'Militia' => array(
      'className' => 'Militia', 
      'foreignKey' => 'militia_id' 
     ) 
    ); 
} 

и запрос получать члены милиции

$user = $this->Session->read("User"); 

     $militias = $this->Militia->find('all', 
      array(
       'conditions'=>array(
        "Militia.user_id" => $user['User']['id'], 
        "Militia.deleted" => 0 
       ) 
      ) 
     ); 

выход

/app/Controller/UsersController.php (line 41) 
array(
    (int) 0 => array(
     'Militia' => array(
      'id' => '26', 
      'first_name' => 'Chris', 
      'last_name' => 'Morris', 
      'created' => '2013-02-11 13:45:24', 
      'user_id' => '2', 
      'status' => '1', 
      'deleted' => '0' 
     ) 
    ), 
    (int) 1 => array(
     'Militia' => array(
      'id' => '31', 
      'first_name' => 'John', 
      'last_name' => 'Smith', 
      'created' => '2013-02-11 14:03:50', 
      'user_id' => '2', 
      'status' => '0', 
      'deleted' => '0' 
     ) 
    ), 
    (int) 2 => array(
     'Militia' => array(
      'id' => '32', 
      'first_name' => 'test', 
      'last_name' => 'user', 
      'created' => '2013-02-11 14:21:38', 
      'user_id' => '2', 
      'status' => '0', 
      'deleted' => '0' 
     ) 
    ), 
    (int) 3 => array(
     'Militia' => array(
      'id' => '33', 
      'first_name' => 'test', 
      'last_name' => 'user', 
      'created' => '2013-02-11 14:24:02', 
      'user_id' => '2', 
      'status' => '1', 
      'deleted' => '0' 
     ) 
    ) 
) 

Я сделал то же самое, прежде чем на других проектах, но по какой-то причине это один раз, когда он не вытаскивая связанные данные. Вероятно, это что-то глупое, как опечатка, но я искал и тестировал и не нашел ничего плохого.

+0

Какой запрос вы пытаетесь выполнить для извлечения данных? – Alvaro

+0

Показать оператор поиска –

+0

'$ user = $ this-> Session-> read (« Пользователь »); \t \t \t \t \t \t $ ополченцы = $ this-> Militia-> найти ('все', \t \t \t \t массив ( \t \t \t \t \t 'условия' => массив ( \t \t \t \t \t \t "Militia.user_id" \t => $ user ['User'] ['id'], \t \t \t \t "Милиция.удален»\t => 0 \t \t \t \t \t) \t \t \t \t) \t \t \t);.?' –

ответ

0
  1. Проверить ORM (hasOne, hasMany, belongsTo, hasAndBelongsToMany) определение,
  2. Проверьте внешний ключ Идентификаторы установлены правильно
  3. Проверьте, есть ли данные, содержащиеся в таблице и связанная с ним таблицей.
  4. Проверьте результаты находки без условия
  5. Проверьте, чтобы увидеть, если рекурсивный уровень больше, чем 0
  6. Чтобы исключить ваш старый кэшированный выпуск запроса, установите уровень отладки выше до 0
  7. Посмотрите в нижней части sql дамп, чтобы увидеть, какой запрос уволен, если он чувствует себя хорошо, попробуйте тот же запрос с SQL от Cake/Php.
Смежные вопросы