2

データベースの Member と Memberitems に 2 つのテーブルがあります。そのためのモデルを 2 つ作成しました。1 つは Member で、もう 1 つは Memberitem です。

Member モデルには Memberitem との関係があり、Memberitem モデルには Member モデルとの属している関係があります。

Memberitem エントリには、赤、ピンク、緑などの色に基づく特定の分類があります。ここで、ページネーションを使用して、少なくとも 1 つのピンク色の memberitem を持つすべてのメンバーを選択したいと考えています。

現在私は使用しています:

$this->paginate = array(
    'limit' => 5,
    'contain' => array(
        'Memberitem' => array(
            'conditions' => array('Memberitem.color' => 'Pink')
        )
    )
);

しかし、そのすべてのメンバーを示しています。

出力はこれです:

Array
(
[0] => Array
    (
        [Member] => Array
            (
                [id] => 1
                [first_name] => fh
                [last_name] => g
            )

        [Memberitem] => Array
            (
                [0] => Array
                    (
                        [id] => 1
                        [name] => item2
                        [color]=> Pink
                    )
            )

    )

[1] => Array
    (
        [Member] => Array
            (
                [id] => 2
                [first_name] => ad
                [last_name] => vd
            )

        [Memberitem] => Array
            (
            )

    )

[2] => Array
    (
        [Member] => Array
            (
                [id] => 3
                [first_name] => ae
                [last_name] => sdi
            )

        [Memberitem] => Array
            (
                [0] => Array
                    (
                        [id] => 3
                        [name] => item1
                        [color]=> Pink
                    )

            )

    )

)

この結果を示しています。空の memberitem のメンバーがまだ存在します。結果に1番目と3番目のレコードのみが必要です。

4

1 に答える 1

0

これは古典的です:-)しかし、それを得るにはしばらく時間がかかります.

Cake のマニュアルには、これに関する優れた平和があります。あなたは読むべきです:

したがって、特定の MemberItems を持つメンバーのみが必要な場合は、MemberItems に対してクエリを実行し、Member Model を含める必要があります。あなたは実際にメンバーモデルからこれを行うことができます:

$this->Member->Memberitem->find('all', array(
    'conditions' => 'Memberitem.color = "Pink"',
    'contain' => 'Member',
));

または多分あなたのアプリにもう少しケータリング:

$this->paginate['Memberitem'] = array(
    'contain' => array('Member'),
    'conditions' => array(
        'Memberitem.color' => 'Pink',
    ),
);
$items = $this->paginate('Memberitem');

それが役立つことを願っています!

于 2014-05-06T11:27:17.303 に答える