繁体   English   中英

如何在cakephp中找到关联表的最后一条记录?

[英]How to find the last record of an associated table in cakephp?

我正在使用cakephp 2.4.5。 我想找到关联表的最后一条记录。 以下是我的代码

    $Latest = $this->ParentModel->find('first',array(
                           'conditions' => array('ParentModel.id'=>$id),
                           'order' => array('ParentModel.AssociatedModel.id' => 'DESC')
                                                          ));    

此代码与ParentModel.AssociatedModel.id缺少列错误,但id列肯定存在。 它首先看起来是否合适? 如果没有,我该如何修复这个部分或者是否有更好的实现? 谢谢

您不能通过关联模型执行“交叉条件”,但您可以使用可Containable行为来过滤关联模型。

为此,您必须通过以下方式将行为绑定到模型:

public $uses = array('Containable');

然后进行查询:

$this->ParentModel->find('first', array(
    'conditions' => array('ParentModel.id' => $id),
    'contain' => array(
        'AssociatedModel' => array(
            'limit' => 1,
            'order' => array('id DESC')
        )
    )
));

这将为您提供父模型和最后一个关联模型。

您是否尝试阅读有关检索数据的手册 这里有清楚的解释。

如果 AssociatedModel以某种方式与ParentModel 的四种关联类型之一相关联 ,则必须使用以下语法:

$Latest = $this->ParentModel->find('first',array(
   'contain' => array('AssociatedModel'),
   'conditions' => array('ParentModel.id' => $id),
   'order' => array('AssociatedModel.id' => 'DESC')
)); 

使用递归或contains()确保包含其他模型。 请参阅此页关于可包含的内容

如果数据库中的字段名称确实包含一个点,那么CakePHP2就会出现问题,因为它使用点表示法作为分隔符。 至少我从来没有在数据库领域使用过一个点,它是可行的,但没有多大意义,显然打破了Cake,不知道你是否可以解决这个问题。

我猜它应该是这样的

    $Latest = $this->ParentModel->AssociatedModel->find('first',array(
                       'conditions' => array('ParentModel.id'=>$id),
                       'order' => array('AssociatedModel.id DESC')
                                                      ));    

检查它是否正确。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM