CakePHP 3新实体保存失败,没有错误

时间:2017-11-07 01:39:54

标签: php mysql cakephp

我正在尝试保存新创建的实体。保存返回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 );
}

1 个答案:

答案 0 :(得分:0)

问题是我正在创建一个TickerValue实体,但实际上是将它保存到Currencies模型中。

在我看来,这应该会导致异常被抛出,但也许Cakephp社区中有人比我更好地调用是否应该将其报告为错误。