Mysql cakephp field()查询错误
我正在尝试提取名为Mysql cakephp field()查询错误,mysql,sql,cakephp-1.3,limit,Mysql,Sql,Cakephp 1.3,Limit,我正在尝试提取名为gal\u providers //get the id of the last gal_provider add. $order = array("GalProvider.id DESC"); $gal_provider_id = $this->GalProvider->field("id",array("order"=>$order)); $this->data["User"]["username"] = "gal_provider_".$gal_p
gal\u providers
//get the id of the last gal_provider add.
$order = array("GalProvider.id DESC");
$gal_provider_id = $this->GalProvider->field("id",array("order"=>$order));
$this->data["User"]["username"] = "gal_provider_".$gal_provider_id;
但它显示了如下错误:
警告(512):SQL错误:1064:您的SQL语法有错误;
检查与MySQL服务器版本对应的手册,了解
在“order=('GalProvider.id DESC')LIMIT 1'附近使用的正确语法
第1行[CORE/cake/libs/model/datasources/dbo_source.php,第684行]
查询:从gal\u提供者
ASGalProvider
其中order=('GalProvider.id DESC')限制1
代码有什么问题?尝试更改此代码:
$order = array("GalProvider.id DESC");
为此:
$order = array('GalProvider.id' => 'desc');
或者试试这个:
$gal_provider_id = $this->GalProvider->field("id",array('order' => array('GalProvider.id' => 'desc')));
如中所述,Model::field()方法的第二个参数用于条件,第三个参数用于顺序
同时查看文档,我们可以看到默认情况下,条件和顺序参数为null——这意味着我们也可以这样做
试试这个:
$gal_provider_id = $this->GalProvider->field("id", null, "id DESC");
$this->data["User"]["username"] = "gal_provider_".$gal_provider_id;
在您的示例中,您正在使用Model::field()方法,就好像它是Model::find()方法一样(它们是两个不同的方法,需要不同的参数格式)
或者,我们可以使用find方法本身:
$gal_provider = $this->GalProvider->find('first', array(
'fields' => array('GalProvider.id'),
'order' => 'GalProvider.id DESC',
'recursive' => -1 // more efficient (ensures no joins made for the query)
));
$this->data["User"]["username"] = "gal_provider_".$gal_provider['GalProvider']['id'];
现在查询变成了
SELECT
GalProvider
id`FROMgal\u providers
ASGalProvider
WHERE order=('desc')LIMIT 1`并且显示了相同的错误!:-(与GalProvider
选择GalProvider中的id`FROMgal_providers
中的GalProvider
相同的错误,其中order=('desc'))限制1`但我没有名为order
的字段。我只想order by desc desc限制1
是order
表中的一个列名吗?不是。它是用于order by id desc
的,那么你有一个错误的where
语法。我很困惑,因为我是cake
新手。基本上我没有where条件我只想执行查询从Galu提供者中选择id按id排序描述限制1
应该会帮助您。