2

民兵と差し止め命令の 2 つのテーブルがあります。民兵は多くの差し止め命令を持つことができ、差し止め命令は 1 つの民兵にのみ属します。私はそれらをモデルに設定しましたが、民兵のためにすべての検索を呼び出すと、差し止め命令が引き出されません.

民兵モデル

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、begsTo、hasAndBelongsToMany) の定義を確認し、
  2. 外部キー ID が正しく設定されているかどうかを確認する
  3. テーブルとその関連テーブルにデータがあるかどうかを確認します。
  4. 条件なし検索の結果を確認する
  5. 再帰レベルが 0 より大きいかどうかを確認する
  6. 古いキャッシュ クエリの問題を除外するには、デバッグ レベルを 0 に設定します
  7. SQL ダンプの一番下のセクションを調べて、どのクエリが起動されているかを確認します。問題がなければ、Cake/Php から離れた SQL で同じクエリを試してください。
于 2013-03-10T11:55:45.980 に答える