cakephp 可容纳蛋糕的内部连接

hgc7kmma  于 2022-11-11  发布在  PHP
关注(0)|答案(2)|浏览(176)

我有三个表,restaurantsordersusers订单表有字段restaurant_idstatususer_id

restaurant -> hasMany orders
orders belogsTo Restaurant
orders belongsTo users

我只需要找到那些有status = 1的订单的餐馆,同时需要获取用户的信息。
所以,我正在与orders表进行内部连接,

$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查询。

mrzz3bfm

mrzz3bfm1#

您是否也尝试了其他联接以获取用户?
大概是这样的:

$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'
            )
    ),

));

注:我通常发现最简单的方法(对于复杂的查询,您很难弄清楚)是100%用SQL构建查询,并让它按照您的喜好工作,然后用CakePHP重新构建它。

4dc9hkyq

4dc9hkyq2#

状态为1且包含餐厅和用户信息的订单列表:

$this->Restaurant->Order->find('all', array('conditions'=>array('Order.status'=>1), 'contain'=>array('Restaurant', 'User')))

相关问题