【问题标题】:cakephp field() query errorcakephp field() 查询错误
【发布时间】:2014-02-24 07:30:08
【问题描述】:

我正在尝试提取名为gal_providers 的表的最新id

//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 FROM gal_providers AS GalProvider WHERE order = ('GalProvider.id DESC') LIMIT 1

代码有什么问题?

【问题讨论】:

  • order 是您表中的列名吗?
  • No..its for order by id DESC
  • 那你的where语法有误。
  • 好吧,我很困惑,因为我是 cake 的新手。基本上我没有where条件。我只想执行查询SELECT id FROM gal_providers ORDER BY id DESC LIMIT 1
  • Cake PHP: Retrieving Data 应该会帮助你。

标签: mysql sql cakephp-1.3 limit


【解决方案1】:

尝试改变这一点:

$order = array("GalProvider.id DESC");

到这里:

$order = array('GalProvider.id' => 'desc');

或者试试这个:

$gal_provider_id = $this->GalProvider->field("id",array('order' => array('GalProvider.id' => 'desc')));

【讨论】:

  • 现在查询变为SELECT GalProvider.id` FROM gal_providers AS GalProvider WHERE order = ('desc') LIMIT 1 ` 并且显示相同的错误!
  • :-( 相同的错误SELECT GalProvider.id` FROM gal_providers AS GalProvider WHERE order = ('desc') LIMIT 1 ` 但是我没有一个名为 @987654332 的字段@.我只想order by desc desc limit 1
【解决方案2】:

CakePHP documentation 中所述,Model::field() 方法的第二个参数用于条件,第三个参数用于顺序。

另外查看文档,我们可以看到默认情况下条件和顺序参数为空 - 这意味着我们可以这样做。

试试这个:

$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'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 1970-01-01
    相关资源
    最近更新 更多