0

我有两个相关的模型:

  1. 位置有很多运动
  2. 运动属于位置

在我的运动模型中,我使用这个顺序:

public $order = 'Location.name ASC, Sport.name ASC';

那里没问题。问题是,当我尝试通过 Location 模型删除记录时,我在 ON 子句中收到 Unknown column 错误,它使用的是 Sport 模型顺序:

SELECT `Sport`.`id` FROM `scheduler`.`sports` AS `Sport` WHERE `Sport`.`location_id` = 6 ORDER BY `Location`.`name` ASC, `Sport`.`name` ASC

我在 Location hasMany 关联中有 'dependent' => true ,所以我希望它删除 Sport 记录,但为什么该 select 语句没有正确加入 Location 表。我将递归设置为 1。如果我按顺序删除 Location.name,它可以正常工作。

cakePHP 有点新意。使用 2.x

4

1 回答 1

0

从 Sport 中删除 $order - 模型中的 $order 定义模型的默认排序顺序 - 不是任何相关模型。

如果您需要订购查询,您可以这样做:

$results = $this->Sport->find('all', array(
    'conditions'=>array(...),
    'contain'=>array(
        'Location'=>array(
            'order'=>array('Location.name'=>'ASC')
        )
    ),
    'order'=>array(
        'Sport.name'=>'ASC'
    )
));

或者,在您的运动模型中留下 $order,但它应该只是:

public $order = array('Sport.name'=>'ASC');

并在位置模型中添加一个类似的:

public $order = array('Location.name'=>'ASC');
于 2013-02-14T09:16:45.997 回答