2013-02-11 63 views
2

我有2個表,民兵和Injunctions。民兵可以有許多禁令和禁令只屬於一個民兵。我在模型中設置了這些,但是當我打電話給民兵尋找所有的禁令時,都不會退出。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 2013-02-11 15:12:09

+0

顯示查找語句 – 2013-02-11 15:18:03

+0

'$ user = $ this-> Session-> read(「User」); \t \t \t \t \t \t $民兵= $這個 - > 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 \t「民兵。刪除」 \t => 0 \t \t \t \t \t) \t \t \t \t) \t \t \t);?' – 2013-02-11 15:21:55

回答

0
  1. 檢查ORM(hasOne,的hasMany,屬於關聯,hasAndBelongsToMany)的定義,
  2. 檢查外鍵的ID都設置正確
  3. 檢查是否有數據在表及其相關表。
  4. 檢查發現的結果,而條件
  5. 檢查,看是否遞歸級別大於0
  6. 爲了排除舊的緩存的查詢問題,設置調試級別更高,以0
  7. 在底部看出來的SQL轉儲來查看正在觸發什麼查詢,如果感覺不錯的話,嘗試使用與Cake/Php不同的SQL進行查詢。