【问题标题】:CakePHP find contain having deep ordersCakePHP 发现包含有深度订单
【发布时间】:2013-04-25 12:44:41
【问题描述】:

我有以下型号:

Client hasMany Loan
Loan belongsTo Book
Loan belongsTo Client
Book belongsTo BookType

我的表格是这样的:

clients { id, name, ... }
loans { id, client_id, book_id }
books { id, book_type_id }
book_types { id, title }

我想通过客户 ID 查找所有贷款。这是我尝试过的:

$client = $this->Client->find('first', array(
    'conditions' => array(
        'Client.id' => $id
    ),
    'contain' => array(
        'Loan' => array(
            'Book' => array(
                'BookType' => array(
                    'order' => 'sachtitel DESC'
                )
            )
        )
    )
));

这没有按预期工作。我的数据没有按我想要的方式排序。

我做错了什么?

编辑:好吧,看来,只要我使用contain,我就不能使用顺序,因为CakePHP会生成多个查询来获取数据。因此我的订单没有用,因为 CakePHP 生成的查询只获取了 1 行。 如何使用联接从表中获取数据?

【问题讨论】:

  • “我的数据没有按照我想要的方式排序。” - 请澄清 - 你想要什么,这与你得到的有什么不同。

标签: sql cakephp relationship


【解决方案1】:

在创建关系时定义顺序。试试这样的:

$this->Book->bindModel(array(
    'belongsTo' => array(
       'BookType' => array('order' => 'sachtitel DESC' )
));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多