我正在尝试提取名为id
gal_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行]
查询:SELECT
GalProvider
。id
FROMgal_providers
ASGalProvider
WHERE order =('GalProvider.id DESC')LIMIT 1
代码有什么问题?
答案 0 :(得分:0)
尝试改变这个:
$order = array("GalProvider.id DESC");
到此:
$order = array('GalProvider.id' => 'desc');
或试试这个:
$gal_provider_id = $this->GalProvider->field("id",array('order' => array('GalProvider.id' => 'desc')));
答案 1 :(得分:0)
如CakePHP documentation所述,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'];