CakePHP 3 find(),每行的顺序为
伙计,我不知道为什么这不起作用,我在逐字逐句地听曼努埃尔的话 我有一个ProductStyles表,它有一个order列。假设我有5行。我删除了3号。我希望找到与产品id匹配的所有行,并逐步替换订单,遍历其中的每一行CakePHP 3 find(),每行的顺序为,php,sql,cakephp,cakephp-3.0,Php,Sql,Cakephp,Cakephp 3.0,伙计,我不知道为什么这不起作用,我在逐字逐句地听曼努埃尔的话 我有一个ProductStyles表,它有一个order列。假设我有5行。我删除了3号。我希望找到与产品id匹配的所有行,并逐步替换订单,遍历其中的每一行 Productstyle Table id - product_id - order 我的第一步是按顺序获取所有与产品ID匹配的行,这样我就可以进行foreach,但我会不断地得到SQL错误。老实说,除了基本的select之外,我对SQL不太了解 $query = $this-&
Productstyle Table
id - product_id - order
我的第一步是按顺序获取所有与产品ID匹配的行,这样我就可以进行foreach,但我会不断地得到SQL错误。老实说,除了基本的select之外,我对SQL不太了解
$query = $this->ProductStyles->find()
->where(['product_id'=> 1 ])
->order(['order' => 'ASC'])
;
//debug($query);
//debug( $query->all() ); //this throws an error
错误消息:
错误:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“order ASC”附近使用的正确语法
SQL:
order
是一个保留的单词,不允许以不带引号(在本例中为非倒勾)的方式使用,它需要以`order`
看
顺序
是一个保留的单词,不允许以不带引号(在本例中为非倒勾)的方式使用,它需要以`order`
的形式使用
看
order
是SQL中的保留关键字,因此,如果要用作列名,则需要使用引号,如下所示:
SELECT * FROM table ORDER BY `order` ASC
正如您在错误中看到的,没有引用
也许您必须使用$this->Model->query()
并手动编写查询
另一个解决方案是将“订单”列更改为另一个名称
希望这有帮助。
order
是SQL中的保留关键字,因此,如果要用作列名,需要使用引号,如下所示:
SELECT * FROM table ORDER BY `order` ASC
正如您在错误中看到的,没有引用
也许您必须使用$this->Model->query()
并手动编写查询
另一个解决方案是将“订单”列更改为另一个名称
希望这有帮助。收到错误时,请始终显示准确的错误消息,并包括可能的堆栈跟踪和上下文信息!感谢NDM对我的解救:)我附加了错误消息堆栈跟踪将是很多粘贴,希望错误消息是足够的当收到错误时,请始终显示准确的错误消息,并包括可能的堆栈跟踪和上下文信息!感谢NDM对我的解救:)我附加了错误消息堆栈跟踪将有很多粘贴,希望错误消息是足够的