2009-10-21 78 views
0

我在CakePHP google-group上問了這個問題,但沒有找到任何解決方案,所以希望在這裏有更好的運氣。MAMP和CakePHP調用模型問題

我已經介紹CakePHP開發了一下,決定對MAMP一個 本地主機的版本,這樣我可以演示我的應用程序的人 而不依賴於互聯網連接。

我們有幾個複雜的MySQL查詢製成,並使用

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

我們已在這些在合適的模型函數內從控制器刪除所有此邏輯。因此,從控制器,我們將有一些像

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

,即轉到user.php的 模型並運行該功能。這適用於我們的生活和DEV 點很好,但對甲基苯丙胺某種原因,我得到每當這種類型的調用是犯了一個錯誤,作爲一個調用的一個例子:

錯誤:

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 

在根目錄88行是這樣的:$ Dispatcher->訊($網址);

我試過CakePHP的1.2和1.2.5。 MySQL在MAMP是5.1.31和我的主人,MEDIATEMPLE上,是5.1.26-RC

感謝所有幫助

回答

0

找到了解決方案。它與MAMP無關,事實上我們最終在我們的開發服務器上發現了這個錯誤,但不是我們的活動服務器。

基本上,Cake核心在兩臺服務器上都不同 - 但很細微(一個是RC,另一個是最終的)。較舊的版本能夠解釋HABTM模型關係,但較新的核心不會除非您明確指定它們(因爲遵循所有命名約定,這必定是一個錯誤)。

因此,這裏是它如何工作: - 你有一個模型user.php的和tag.php - 在user.php的,你將與所述標籤模型 一個HABTM的關係 - 在這種陣列中,添加字段:「與」 =>「UsersTag」 - 執行相同的tag.php

這樣的CakePHP沒有弄清楚型號名稱是什麼(儘管它應該是能夠)

0

如果強制蛋糕以呼應查詢會發生什麼,並嘗試手動運行在mySQL客戶端?它看起來像你的本地版本創建一個不同於你的主機版本的查詢 - 因爲mySQL抱怨語法。

+0

查詢函數內部本身很好。由於某些原因,Cake將模型函數解釋爲MySQL函數 – 828 2009-10-26 14:27:51