我正在使用CakePHP 2.6中的Console Shell脚本,该脚本在从Feed中检索元素时更新指定表中的数据。
不幸的是,我从更新查询中收到错误:
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相当新,所以如果这是一个愚蠢的问题,请耐心等待,我做错了吗?
谢谢,
答案 0 :(得分:1)
$ fields数组接受SQL表达式。应使用DboSource :: value()手动引用文字值。例如,如果您的某个模型方法正在调用updateAll(),那么您将执行以下操作:
示例,以及文档中显示如何转义字段的示例:
$db = $this->getDataSource();
$value = $db->value($value, 'string');
$this->updateAll(
array('Baker.something' => $value),
array('Baker.active' => true)
);
您的条件数组中也不需要=
。
答案 1 :(得分:0)
我没有在CakePHP中工作,但看起来你需要将数组值包装在单引号中以使其工作。
$datas = Array
(
[VendorCurrency.curr_from] => 'GBP'
[VendorCurrency.curr_to] => 'CAD'
[VendorCurrency.sell_rate] => 1.957
[VendorCurrency.buy_rate] => 2.028
)