Столбец не найден ОШИБКА в моем первом проекте CakePHP

Я использую CakePHP, и я получаю следующую ошибку!
Что из-за

ON (`Trip`.`city_id` = `City`.`id`)

Должно быть

(`City'.`city_id` = `Trip`.`id`)

Как я могу исправить это?

Ошибка: SQLSTATE [42S22]: столбец не найден: 1054 Неизвестный столбец «Trip.city_id» в «предложении»

SELECT
`Trip`.`id`, `Trip`.`user_id`, `Trip`.`type_id`, `Trip`.`title`,
`Trip`.`city1`, `Trip`.`city2`, `Trip`.`date`, `Trip`.`free_places`,
`Trip`.`description`, `Trip`.`contact_email`, `Trip`.`created`,
`City`.`city_id`, `City`.`city_name`
FROM
`mitfahr-ar`.`trips` AS `Trip`
LEFT JOIN
`mitfahr-ar`.`cities` AS `City` ON (`Trip`.`city_id` = `City`.`id`)
WHERE 1 = 1

Код моей модели:

<?php
class Trip extends AppModel
{
public $name= 'Trip';
public $belongsTo= array('City');
}
?>

0

Решение

[….] Это потому что

ON (`Trip`.`city_id` = `City`.`id`)

Должно быть

(`City'.`city_id` = `Trip`.`id`)

Нет, не должно, последнее не имеет никакого смысла, `City`.`city_id` будет означать самостоятельное присоединение, и в любом случае один город может быть связан только с одной другой записью, что не имеет смысла нормализация мудрый.

Прежнее выражение, сгенерированное CakePHP, абсолютно правильно, в belongsTo Ассоциация, внешний ключ удерживается текущей моделью.

Увидеть http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto

Чтобы исправить проблему, добавьте правильную city_id внешний ключ к вашему trips Таблица.

1

Другие решения

ON (Trip,city_id знак равно City,id)

Выше запрос из-за того, как вы связываете модели.

Так как в вашей ниже ассоциации:

<?php
class Trip extends AppModel
{
public $name= 'Trip';
public $belongsTo= array('City');
}
?>

Вы не определяете какой-либо внешний ключ, следовательно, в соответствии с соглашениями о CakePHP, он будет автоматически искать поле ‘city_id’, и вы создали его, а значит, и запрос.

Решение:

Вы должны определить атрибут внешнего ключа в вашей ассоциации.

0

По вопросам рекламы [email protected]