문제

나는 CakePHP Google Group에 대해이 질문을했지만 해결책을 찾지 못했기 때문에 여기서 더 나은 운이 좋을 것입니다.

나는 CakePHP에서 약간의 개발을 해왔고 MAMP에 로컬 호스트 버전을 갖기로 결정하여 인터넷 연결에 의존하지 않고 앱을 사람들에게 데모 할 수 있도록 결정했습니다.

우리는 몇 가지 복잡한 MySQL 쿼리가 만들어지고 사용합니다.

$this->query('SELECT...');

컨트롤러 에서이 모든 논리를 제거하기 위해 기능 내에 적절한 모델에이를 배치했습니다. 따라서 컨트롤러에서 우리는 같은 것을 가질 수 있습니다

$this->Users->getMeSomething($variable);

, 그것은 user.php 모델로 이동하여 그 기능을 실행합니다. 이것은 우리의 라이브 및 DEV 사이트에서 잘 작동하지만 MAMP의 어떤 이유로 든이 유형의 호출이 이루어질 때마다 전화 중 하나의 예로서 오류가 발생합니다.

오류:

Warning (512): SQL Error: 1064: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the
right syntax to use near '__getUsersForUsers' at line 1 [CORE/cake/
libs/model/datasources/dbo_source.php, line 525]

문맥:

DboSource::showQuery() - CORE/cake/libs/model/datasources/
dbo_source.php, line 525
DboSource::execute() - CORE/cake/libs/model/datasources/
dbo_source.php, line 201
DboSource::fetchAll() - CORE/cake/libs/model/datasources/
dbo_source.php, line 336
DboSource::query() - CORE/cake/libs/model/datasources/dbo_source.php,
line 297
Model::call__() - CORE/cake/libs/model/model.php, line 441
Overloadable::__call() - CORE/cake/libs/overloadable_php5.php, line 52
AppModel::__getUsersForUsers() - [internal], line ??
UsersController::view() - APP/controllers/users_controller.php, line
401
Object::dispatchMethod() - CORE/cake/libs/object.php, line 118
Dispatcher::_invoke() - CORE/cake/dispatcher.php, line 227
Dispatcher::dispatch() - CORE/cake/dispatcher.php, line 194
[main] - APP/webroot/index.php, line 88

Webroot의 88 행은 다음과 같습니다. $ Dispatcher-> Dispatch ($ URL);

CakePHP의 1.2와 1.2.5를 모두 시도했습니다. MIMP의 MySQL은 5.1.31이고 내 호스트 Mediatemple은 5.1.26-RC입니다.

도움을 주셔서 감사합니다

도움이 되었습니까?

해결책 2

해결책을 찾았습니다. MAMP와는 아무런 관련이 없습니다. 사실 우리는 Dev 서버 에서이 버그를 결국 발견했지만 라이브 서버는 아닙니다.

기본적으로 Cake Core는 두 서버에서 모두 다르지만 Minutly (하나는 RC이고 다른 하나는 최종이었습니다). 더 오래된 것은 HABTM 모델 관계를 해석 할 수 있었지만, 최신 코어는 명시 적으로 지정하지 않는 한 (이것은 모든 이름 지정 규칙을 따랐기 때문에 버그 여야합니다).

따라서 작동하는 방법은 다음과 같습니다 .- 모델 user.php 및 tag.php -user.php에는 태그 모델과 HABTM 관계가 있습니다. 해당 배열에서 'with'=> '라는 필드를 추가합니다. Userstag ' - tag.php에 대해서도 동일합니다

이런 식으로 CakePHP는 모델 이름이 무엇인지 알아낼 필요가 없습니다 (가능하지만)

다른 팁

케이크가 쿼리를 반향하도록 강요하고 MySQL 클라이언트에서 수동으로 실행하려고하면 어떻게됩니까? MySQL이 구문에 대해 불평하기 때문에 로컬 버전이 호스트의 버전과 다른 쿼리를 생성하는 것처럼 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top