CakePHP 3 新实体保存失败且没有错误
Posted
技术标签:
【中文标题】CakePHP 3 新实体保存失败且没有错误【英文标题】:CakePHP 3 new entity save fails with no error 【发布时间】:2017-11-07 01:39:53 【问题描述】:我正在尝试保存一个新创建的实体。保存返回 false,但我看不到任何验证错误或 SQL 错误,也没有抛出异常。
实体对象是在表对象上使用 newEntity() 创建的,然后填充。然后当我调用 save() 时,它返回 false。这是save()失败后实体对象的调试输出:
object(App\Model\Entity\TickerValue)
'from_currency_id' => (int) 1,
'to_currency_id' => (int) 1228,
'created' => (int) 1509594561,
'value' => (float) 0.00726931,
'[new]' => true,
'[accessible]' => [
'*' => false
],
'[dirty]' => [
'from_currency_id' => true,
'to_currency_id' => true,
'created' => true,
'value' => true
],
'[original]' => [],
'[virtual]' => [],
'[errors]' => [],
'[invalid]' => [],
'[repository]' => 'TickerValues'
当我尝试在 phpMyAdmin 中手动插入这些值时,它工作正常。
这是桌子:
CREATE TABLE 'ticker_values' (
'from_currency_id' int(11) NOT NULL,
'to_currency_id' int(11) NOT NULL,
'created' int(11) NOT NULL,
'value' decimal(24,8) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我尝试打开查询日志记录,但只得到一堆这样的条目:
2017-11-07 01:13:29 Debug: duration=0 rows=0 ROLLBACK
2017-11-07 01:13:29 Debug: duration=0 rows=0 BEGIN
此代码从 Shell 类运行。但在同一类的另一个函数中,非常相似的保存工作正常,所以我认为这不是问题。
Table 和 Entity 类不包含任何逻辑或回调。
感谢您对此的任何帮助!
编辑:这是问题所在 - 我将实体保存到不同的模型。这不应该抛出异常吗??
$priceFieldName = 'price_'.strtolower($fromCurrency->symbol);
$tickerValues = TableRegistry::get('TickerValues');
$newValue = $tickerValues->newEntity();
$newValue->from_currency_id = intval($fromCurrency->id);
$newValue->to_currency_id = intval($toCurrency->id);
$newValue->created = intval($tickerItem->last_updated);
$newValue->value = (float)$tickerItem->$priceFieldName;
if( !$this->currencies->save( $newValue ) )
debug( $newValue );
【问题讨论】:
包含您的代码 你能把你用来保存数据的控制器也包括进来吗? 大家好,刚刚添加了代码。最初没有包括它,因为没有太多的事情发生,但希望它能让事情变得更清楚!就像我提到的那样,我使用的是 Shell 类而不是普通控制器,但似乎不是问题所在。 糟糕,就是这样,我保存到错误的模型!这没有被标记为任何类型的错误或异常,这不是很奇怪吗? 【参考方案1】:问题是我正在创建一个 TickerValue 实体,但实际上将它保存到货币模型中。
在我看来,这应该会导致抛出异常,但也许 Cakephp 社区中的某个人比我更能决定是否应该将其报告为错误。
【讨论】:
以上是关于CakePHP 3 新实体保存失败且没有错误的主要内容,如果未能解决你的问题,请参考以下文章