2

我有 2 张桌子,民兵和禁令。民兵可以有许多禁令,禁令只属于一个民兵。我在模型中设置了这些,但是当我为民兵组织寻找一切时,禁令并没有被取消。

民兵模型

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

我以前在其他项目上做过同样的事情,但出于某种原因,这一次它没有提取相关数据。这可能是一些愚蠢的错字,但我一直在寻找和测试,找不到任何错误。

4

1 回答 1

0
  1. 检查ORM(hasOne、hasMany、belongsTo、hasAndBelongsToMany)定义,
  2. 检查外键ID是否设置正确
  3. 检查表及其相关表中是否有数据。
  4. 无条件检查 find 的结果
  5. 检查递归级别是否大于0
  6. 要排除旧的缓存查询问题,请将调试级别设置为 0
  7. 在 sql dump 的底部查看正在触发的查询,如果感觉还可以,请尝试使用远离 Cake/Php 的 SQL 进行相同的查询。
于 2013-03-10T11:55:45.980 回答