0

所以我有一个像这样的自我引用模型。

class Category extends AppModel {
  public $order = "Category.name";
  public $belongsTo = array(
      'ParentCategory' => array(
          'className'    => 'Category',
          'foreignKey'   => 'parent_id',
          'order'        => 'ParentCategory.name'
      )
  );
}

它产生的 sql 查询是这样的:

SQL Query: SELECT `ParentCategory`.`id`, `ParentCategory`.`name` FROM `cakephp`.`categories` AS `ParentCategory` WHERE 1 = 1 ORDER BY `Category`.`name` ASC

这不起作用,因为"Category"这里不是表名。

我在这里做错了什么。为什么它不尊重我的“秩序”规则?

4

1 回答 1

0

我在 CakePHP 文档中找到了一个类似问题的解决方案:

http://book.cakephp.org/2.0/en/models/virtual-fields.html#virtual-fields-and-model-aliases

所以基本上,任何时候你想使用模型别名,最好像这样在构造函数中定义值:

  public function __construct($id = false, $table = null, $ds = null) {
      parent::__construct($id, $table, $ds);
      $this->order = $this->alias.".whatever";
  }
于 2012-11-06T00:42:33.867 回答