0

次の配列があり、同じ会社のすべてのユーザーをグループ化したいと思います。現在、すべてのユーザーが会社IDで表示されており、1つのコンペイの下に2人以上のユーザーがいる場合もあります。だから私はちょっとそれを元に戻して、ユーザーの下の会社ではなく会社の下のユーザーを表示したいと思います。どうやってやるの?

Array
(
    [0] => Array
        (
            [User] => Array
                (
                    [id] => 1
                    [company_id] => 20
                    [type] => 
                )


        )

    [1] => Array
        (
            [User] => Array
                (
                    [id] => 6
                    [company_id] => 21
                    [type] => 
                )


        )

    [2] => Array
        (
            [User] => Array
                (
                    [id] => 7
                    [company_id] => 22
                    [type] => 
                )


        )

    [3] => Array
        (
            [User] => Array
                (
                    [id] => 14
                    [company_id] => 21
                    [type] => 
                )


        )

    [4] => Array
        (
            [User] => Array
                (
                    [id] => 15
                    [company_id] => 22
                    [type] => 
                )



        )

    [5] => Array
        (
            [User] => Array
                (
                    [id] => 16
                    [company_id] => 21
                    [type] => 
                )


                )

        )

)
4

2 に答える 2

1

例から、あなたの関係は次のようになっていると思います。

「ユーザーbelongsToCompany」および「CompanyhasManyUser」

@tigrangは正しいです。会社で検索を行うと、ユーザーは会社ごとにグループ化されます。

$this->Company->find('all', array('conditions' => array('id' => $companyId)));

会社モデルに他の多くの関係があり、ユーザーのみが必要な場合は、ContainableBehaviourを使用できます。まず、会社モデルに追加します。

public $actsAs = array('Containable);

次に、find()呼び出しで:

$this->Company->find('all', array('conditions' => array('id' => $companyId), 'contain' => array('User')));

'contain'キーは、モデル名の配列または単一のモデルの文字列を受け入れます。モデルのバインディングをその場で調整し、会社モデルとユーザーモデルのデータのみを残します(上記の例のように使用した場合)。

そして、私が逃した小さなこと。ユーザーモデルの検索で「グループ」キーを使用することもできます。

$this->User->find('all', array('group' => 'company_id'));

両方のアプローチを試して、思いついたことを確認してください。

于 2012-05-11T09:53:20.737 に答える
-1

代わりに、recursiveまたはContainableBehaviorを使用して、Companyモデルで検索を実行します。

于 2012-05-10T18:42:51.123 に答える