模型关联的未知列错误

时间:2013-02-14 01:42:08

标签: cakephp

我有两个相关的模型:

  1. 位置hasMany Sports
  2. 体育所属位置
  3. 在我的运动模型中,我正在使用此订单:

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

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

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

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

    CakePHP有点新鲜。使用2.x

1 个答案:

答案 0 :(得分: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');