Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql cakephp field()查询错误_Mysql_Sql_Cakephp 1.3_Limit - Fatal编程技术网

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提供者
AS
GalProvider
其中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`FROM
gal\u providers
AS
GalProvider
WHERE order=('desc')LIMIT 1`并且显示了相同的错误!:-(与
GalProvider
选择
GalProvider
中的
id`FROM
gal_providers
中的
GalProvider
相同的错误,其中order=('desc'))限制1`但我没有名为
order
的字段。我只想
order by desc desc限制1
order
表中的一个列名吗?不是。它是用于
order by id desc
的,那么你有一个错误的
where
语法。我很困惑,因为我是
cake
新手。基本上我没有where条件我只想执行查询
从Galu提供者中选择id按id排序描述限制1
应该会帮助您。