Ошибки отношений CakePHP - PullRequest
       1

Ошибки отношений CakePHP

0 голосов
/ 14 апреля 2011

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

Предупреждение (512): Ошибка SQL: 1054: неизвестный столбец «Category.post_id» в «списке полей» [CORE \ cake \ libs\ model \ datasources \ dbo_source.php, строка 684]

Я предполагаю, что эта ошибка была вызвана тем, как я установил отношения в моделях, так как ошибка указывает, что она искала 'Категория.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 голосов
/ 10 июня 2012

Создайте еще одну таблицу с именем posts_categories с идентификаторами столбцов, 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');
}
0 голосов
/ 03 апреля 2013

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

class Post extends AppModel {
    var $name = 'Post';
    var $belongsTo = 'User';
    var $hasMany = 'Category';
    var $primaryKey = 'id';
}
0 голосов
/ 14 апреля 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...