2014-10-04 2 views
0

CakePHP를 사용하고 있는데 다음과 같은 오류가 발생합니다! 내가 어떻게 수정할 수 있습니다열을 찾을 수 없습니다. 내 첫 번째 CakePHP 프로젝트에서 오류가 발생했습니다.

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

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

수 있어야하기 때문에 어느 무엇입니까?

Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'Trip.city_id' in 'on clause'

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

항상 정확한 CakePHP 버전을 언급하고 적절하게 질문을 태그하십시오! – ndm

답변

1

[....] Which is because

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

Should be

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

아니,이, 후자는 `City`.`city_id`는이 자체 조인 나타냅니다, 전혀 의미하지 않으며, 어떤 경우 A의 안 단일 도시는 하나의 다른 레코드와 만 연관 될 수 있으며 이는 의미가 없습니다 normalization 현명한.

CakePHP에 의해 생성 된 표현식은 belongsTo 어소시에이션에서 절대적으로 정확합니다. 외래 키는 현재 모델에 보관됩니다.

http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#belongsto

그래서, 문제를 해결하여 trips 테이블에 적절한 city_id 외래 키를 추가하십시오.

0

ON (Trip . city_id = City . id)

위의 쿼리는 모델을 연결하는 방식 때문입니다.

당신의 아래 assocaiton에 있기 때문에 : 당신은 따라서 CakePHP에서의 규칙에 따라 외국 키를 정의하지 않는

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

, 자동으로 'CITY_ID'필드 필드를 검색 할 것입니다 그리고 당신은 따라서 것을 만들었습니다 쿼리.

해결책 :

연관에 외래 키 특성을 정의해야합니다.

관련 문제