cakephp无法使用MSSQL在实例中保存实体

时间:2016-09-21 10:30:49

标签: cakephp cakephp-3.0

使用Microsoft SQL Server 2012(MSSQL),无法循环实体结果并保存它们。以前使用相同的代码可以正常使用MySQL。

在修改第一个实体后,服务器将立即抛出此错误:

错误:SQLSTATE [HY010]:[Microsoft] [SQL Server的ODBC驱动程序11]函数序列错误

在实体为foreach d后,save循环的下一次迭代发生实际错误。用于演示错误的简单代码:

$priceRows = $pricesTable
    ->find()
    ->where(['event_id' => $eventsQuery->id]);

foreach($priceRows as $query) {
    $query->comment = 'new value';
    $pricesTable->save($query);
}

我在cakephp 3.1.5和3.3.3上尝试了这个,结果相同。我花了几个小时调试这个没有运气。

2 个答案:

答案 0 :(得分:0)

我过去也遇到过类似的问题。

请改为尝试:

foreach($priceRows as $query) {
    $pricesTable->patchEntity($query, ['comment' => 'new value');
    $pricesTable->save($query);
}

答案 1 :(得分:0)

我遇到了同样的问题,解决方案受到@Martin Hrabal评论的启发,所以试着改变:

$priceRows = $pricesTable
    ->find()
    ->where(['event_id' => $eventsQuery->id]);

$priceRows = $pricesTable
    ->find()
    ->where(['event_id' => $eventsQuery->id])
    ->toArray();