Ошибки в отношениях CakePHP

#cakephp

Вопрос:

Я получаю эту ошибку в своем приложении cakephp

Предупреждение (512): Ошибка SQL: 1054: Неизвестный столбец «Категория.post_id» в «списке полей» [COREcakelibsmodeldatasourcesdbo_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'));
}
 

Есть идеи, как я могу это исправить?

Комментарии:

1. Нет, если вы не опубликуете метод, в котором вы получили ошибку, и ваши отношения.

2. У вас есть post_id поле в таблице категорий?

Ответ №1:

Создайте другую таблицу под названием posts_categories со столбцами id, post_id, category_id.

затем ваша Почтовая модель

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

затем вы Классифицируете Модель

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

Комментарии:

1. Не делай этого. Этот пример не является отношением HABTM.

Ответ №2:

Вы должны установить свой идентификатор первичного ключа в своей модели, если он не совпадает с автоматически созданным (для сообщения модели это post_id). Поэтому, если имя первичного ключа вашей таблицы — «id», ваша модель записи должна быть

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

Ответ №3:

В моей базе данных не было поля post_id. Добавил эту колонку, и моя проблема была решена.