CakePHP关系错误

时间:2011-04-14 12:36:22

标签: cakephp

我在我的cakephp应用程序中收到此错误

  

警告(512):SQL错误:1054:'字段列表'中的未知列'Category.post_id'[CORE \ cake \ libs \ model \ datasources \ dbo_source.php,第684行]

我假设这个错误是由我在模型中设置关系引起的,因为错误表明它正在寻找'Category.post_id',这是一个不存在的字段。

这是类别模型代码:

class Category extends AppModel {
   var $name = 'Category';
   var $belongsTo = 'Post';
}

并发布模型代码:

class Post extends AppModel {
    var $name = 'Post';
    var $belongsTo = 'User';
    var $hasMany = 'Category';
}

它显示了几种方法,但这是我的帖子索引操作:

function index() {
    $this->set('posts', $this->Post->find('all'));
}

知道如何解决这个问题吗?

3 个答案:

答案 0 :(得分:0)

使用列id,post_id,category_id创建另一个名为posts_categories的表。

然后你的帖子模型

class Post extends AppModel {
    public $name = 'Post';
    public $hasAndBelongsToMany = array('Category');
}

然后你分类模型

class Category extends AppModel {
    public $name = 'Category';
    public $hasAndBelongsToMany = array('Post');
}

答案 1 :(得分:0)

您应该在模型中建立主键ID,如果它与autogenerated不同(对于模型发布它是post_id)。因此,如果您的表主键名称为“id”,则您的帖子模型应为

class Post extends AppModel {
    var $name = 'Post';
    var $belongsTo = 'User';
    var $hasMany = 'Category';
    var $primaryKey = 'id';
}

答案 2 :(得分:-1)

我的数据库中没有post_id字段。添加了该列,我的问题就解决了。