1

私は3つのテーブル、、、を持ってrestaurantsordersますusers。orders テーブルにはフィールドrestaurant_idstatusおよびがありuser_idます。

restaurant -> hasMany orders
orders belogsTo Restaurant
orders belongsTo users

status = 1 の注文があるレストランのみを検索する必要があり、同時にユーザーの情報を取得する必要があります。

だから、私は注文テーブルとの内部結合を行っています、

$options['joins'] = array(
    array('table' => 'orders',
        'alias' => 'Order',
        'type' => 'INNER',
        'conditions' => array(
            'Restaurant.id = Order.restaurant_id',
        )
    )
);

しかし、ケーキのドキュメントhttp://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#joining-tablesによると、パラメーターが許可されているため、これと一緒にユーザーの情報を取得するにはどうすればよいですかこちらですtable, alias, type, conditions。ユーザーの情報を取得するSQLクエリを最終クエリに埋め込む方法はありますか? はい、別の方法としてカスタム クエリを記述しますが、ケーキを処理する方法はありません。

ありがとう

アップデート

この場合の最善の解決策は、カスタム SQL クエリを作成することでした。

4

2 に答える 2

0

ユーザーも取得するために追加の Join を試しましたか?

このようなもの:

$this->Restaurant->find('all', array(
    'joins' => array(
        array('table' => 'orders',
            'alias' => 'Order',
            'type' => 'INNER',
            'conditions' => array(
                'Restaurant.id = Order.restaurant_id',
                'Order.status = 1'
            )
        ),
        array('table' => 'users',
            'alias' => 'User',
            'type' => 'RIGHT',
            'conditions' => array(
                'Order.user_id = User.id'
            )
    ),

));

注: 私が通常最も簡単に見つけるのは (複雑なクエリを理解するのに苦労している場合)、SQL で 100% クエリを作成し、好みに合わせて動作させてから、CakePHP で再構築することです。

于 2013-08-24T15:24:40.743 に答える
0

ステータスが 1 で、レストランとユーザー情報を含む注文のリスト:

$this->Restaurant->Order->find('all', array('conditions'=>array('Order.status'=>1), 'contain'=>array('Restaurant', 'User')))
于 2013-08-25T11:46:11.497 に答える