我正在CakePHP 2.6中的控制台Shell脚本上工作,该脚本更新指定表中的数据,同时从提要中检索元素。
不幸的是,我从更新查询中得到一个错误:
Error: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'GBP' in 'field list'
这是更新查询:
$this->VendorCurrency->updateAll(
$data,
array(
'VendorCurrency.vendor_id =' => $vendorid,
'VendorCurrency.curr_to =' => $update['currency_code'],
'VendorCurrency.curr_from =' => self::BASE_CURRENCY
)
);
:
$vendorid = 88;
$datas = Array
(
[VendorCurrency.curr_from] => GBP
[VendorCurrency.curr_to] => CAD
[VendorCurrency.sell_rate] => 1.957
[VendorCurrency.buy_rate] => 2.028
)
$update['currency_code'] = 'CAD';
self::BASE_CURRENCY = 'GBP';
我对CakePHP相当陌生,所以如果这是一个愚蠢的问题,请原谅我,我做错了什么吗?
谢谢,
来自官方文档:
$fields数组接受SQL表达式。文字值应该使用DboSource::value()手动引用。例如,如果您的模型方法之一正在调用updateAll(),您将执行以下操作:
显示如何转义字段的示例,也来自文档:
$db = $this->getDataSource();
$value = $db->value($value, 'string');
$this->updateAll(
array('Baker.something' => $value),
array('Baker.active' => true)
);
在条件数组中也不需要=
我没有在CakePHP中工作过,但看起来你需要将数组值包装在单引号中以使其工作。
$datas = Array
(
[VendorCurrency.curr_from] => 'GBP'
[VendorCurrency.curr_to] => 'CAD'
[VendorCurrency.sell_rate] => 1.957
[VendorCurrency.buy_rate] => 2.028
)