Mysql MAMP和CakePHP对模型问题的调用

Mysql MAMP和CakePHP对模型问题的调用,mysql,cakephp,model,mamp,Mysql,Cakephp,Model,Mamp,我在CakePHP谷歌小组上问了这个问题,但没有找到任何解决方案,所以希望在这里会有更好的运气 我已经在CakePHP上开发了一段时间,并决定开发一个 MAMP上的localhost版本,以便我可以向人们演示我的应用程序 不依赖于互联网连接 我们进行了几个复杂的MySQL查询,并使用 $this->query('SELECT...'); 我们已经将它们放置在函数中的适当模型中,以从控制器中删除所有这些逻辑。因此,从控制器中,我们将得到如下内容 $this->Users->ge

我在CakePHP谷歌小组上问了这个问题,但没有找到任何解决方案,所以希望在这里会有更好的运气

我已经在CakePHP上开发了一段时间,并决定开发一个 MAMP上的localhost版本,以便我可以向人们演示我的应用程序 不依赖于互联网连接

我们进行了几个复杂的MySQL查询,并使用

$this->query('SELECT...');
我们已经将它们放置在函数中的适当模型中,以从控制器中删除所有这些逻辑。因此,从控制器中,我们将得到如下内容

$this->Users->getMeSomething($variable);
,则转到user.php 建模并运行该函数。这在我们的live和dev上运行良好 站点,但出于某种原因,在MAMP上,每当进行此类调用时,我都会收到一个错误,作为其中一个调用的示例:

错误:

背景:

webroot上的第88行是:$Dispatcher->dispatch$url

我已经尝试了CakePHP的1.2和1.2.5。MAMP上的MySQL是5.1.31,而我的主机MediaTemple上的MySQL是5.1.26-rc


感谢您的帮助

如果您强制cake回显查询,并尝试在mySQL客户端中手动运行,会发生什么?看起来您的本地版本创建的查询与您主机上的版本不同,因为mySQL正在抱怨语法问题。

找到了解决方案。这与MAMP无关,事实上我们最终在我们的开发服务器上发现了这个bug,但不是我们的实时服务器

基本上,两台服务器上的核心蛋糕都是不同的——但一台是RC,另一台是最终的。旧版本能够解释HABTM模型关系,但新版本的core不能解释,除非您明确指定它们。这一定是一个错误,因为我遵循了所有命名约定

下面是它的工作原理: -您有一个模型user.php和tag.php -在user.php中,您将与标记模型建立HABTM关系 -在该数组中,添加字段:“with'=>“UsersTag” -对tag.php执行相同的操作


通过这种方式,CakePHP不必知道模型名是什么,尽管它应该能够

函数本身内部的查询很好。出于某种原因,Cake将模型函数解释为MySQL函数
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