字段名称'订单'与Zend_Db_table_Abstract与MySQL冲突?
不幸的是,我创建一个名为order
字段名称表。字段名称'订单'与Zend_Db_table_Abstract与MySQL冲突?
有没有办法更改查询生成器来确保字段名在`(单引号的)包裹
我的查询如下:
$select = $this->select(); $select->order('order DESC');
$select->where('order < ?', $row->menu_id);
$select->where('menu_id = ?', $row->menu_id);
建设者创造:
SELECT `menu_items`.* FROM `menu_items`
WHERE (order < '1')
AND (menu_id = '1')
ORDER BY `order` DESC LIMIT 1
我想它来创建
SELECT `menu_items`.* FROM `menu_items`
WHERE (`order` < '1')
AND (menu_id = '1')
ORDER BY `order` DESC LIMIT 1
感谢
回答:
我不是专家,但根据docs
没有引用应用于给予
where()
或orWhere()
方法表达式。如果您有需要引用的列名称,则必须使用quoteIdentifier()
来为条件构成字符串。
有一节使用quoteIdentifier()
的“添加表达式列”的例子:
$select = $db->select() ->from(array('p' => 'products'),
array('origin' =>
'(p.' . $db->quoteIdentifier('from') . ' + 10)')
);
所以,你需要做这样的事情:
$db = Zend_Db_Table::getDefaultAdapter(); $select = $this->select();
$select->order('order DESC');
$select->where($db->quoteIdentifier('order') . ' < ?', $row->menu_id);
$select->where('menu_id = ?', $row->menu_id);
注意的是,在order()
方法,
列名被引用为标识符,除非它们包含圆括号或是
Zend_Db_Expr
类型的对象。
所以你没有做什么特别的存在。
以上是 字段名称'订单'与Zend_Db_table_Abstract与MySQL冲突? 的全部内容, 来源链接: utcz.com/qa/260858.html