在我的第一个CakePHP项目中未找到列错误
我正在使用CakePHP,我得到了以下错误! 这是因为在我的第一个CakePHP项目中未找到列错误,php,mysql,cakephp,mysql-error-1054,Php,Mysql,Cakephp,Mysql Error 1054,我正在使用CakePHP,我得到了以下错误! 这是因为 ON (`Trip`.`city_id` = `City`.`id`) 应该是 (`City'.`city_id` = `Trip`.`id`) (`City'.`city_id` = `Trip`.`id`) 我该怎么纠正呢 错误:SQLSTATE[42S22]:未找到列:“on子句”中的1054未知列“Trip.city_id” SELECT `Trip`.`id`, `Trip`.`user_id`, `Trip`.`t
ON (`Trip`.`city_id` = `City`.`id`)
应该是
(`City'.`city_id` = `Trip`.`id`)
(`City'.`city_id` = `Trip`.`id`)
我该怎么纠正呢
错误:SQLSTATE[42S22]:未找到列:“on子句”中的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');
}
?>
这是因为
ON (`Trip`.`city_id` = `City`.`id`)
应该是
(`City'.`city_id` = `Trip`.`id`)
(`City'.`city_id` = `Trip`.`id`)
不,它不应该这样做,后者完全没有意义,`City`.`City\u id`
将表示一个自连接,并且在任何情况下,单个城市只能与单个其他记录关联,这是没有意义的
CakePHP生成的前一个表达式是绝对正确的,在belongsTo
关联中,外键由当前模型持有
请参见
因此,要解决此问题,请将适当的city\u id
外键添加到trips
表中
在(Trip
city\u id
=city
id
)
上面的查询是因为您关联模型的方式
因为在你下面的联想中:
<?php
class Trip extends AppModel
{
public $name= 'Trip';
public $belongsTo= array('City');
}
?>
您没有定义任何外键,因此根据cakephp的约定,它会自动搜索“city_id”字段,您已经创建了该字段,因此查询
解决方案:
您必须在关联中定义外键属性。请始终提及您的确切CakePHP版本,并相应地标记您的问题!