#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. Добавил эту колонку, и моя проблема была решена.