0

$data クエリ テーブル [id] が 2 番目のテーブルに一致する [sub_id] を持っている場合にのみ、CakePHP で DB をクエリし、$data に物事を返す方法で CakePHP に困惑しました。

標準クエリ:

$data = $this->Table1->findAll(array("Table1.deleted" => "0"), null, "Table1.id DESC", 25, null, 1);

しかし、$data['Table1']['id'] が ['table2']['sub_id'] で見つかった場合にのみ、$data に値を入れたいと考えています。

ありがとう!

4

3 に答える 3

1

関係が適切に設定されている場合、これは自動的に行われます。Table1 と Table2 のモデル関係のセットアップを貼り付けていただけますか?

于 2009-01-13T06:38:35.787 に答える
0

超新星 -

1 つ明確にしておいてください: table1.id が table2.sub_id にある場合にのみ $data に値を入れたいと書いています。table2.sub_id は外部キーで、table1 にリンクしているということですか?

Beau の言う通りだと思います。モデルが正しくリンクされていて、HABTM や belongsTo などの変数を使用している場合、findAll は関連するレコードを table2 から自動的に取得するはずです。

最後の注意点は、モデルの関連付けが Model->recursive の値の影響を受けることです。コード内の recursive プロパティの値を変更した場合、特定のクエリでモデル リレーションが許容される深さが変更されます。

チッ!

于 2009-01-13T16:56:28.927 に答える
0

モデルのリレーション配列に次を追加します。

$hasMany = array(
.....
'required' => true
....
);

これにより、左結合ではなく、SQL で内部結合が行われるようになります。お役に立てれば。

于 2009-03-14T01:53:06.190 に答える