CakePHP模型在创建时将主键设置为false
我用CakePHP为dynamoDB表创建了一个新的数据源。 创建、删除和更新工作查找(从模型创建时返回的数组除外) 我的表中的主键名为device_id,这是我创建新条目时得到的:CakePHP模型在创建时将主键设置为false,php,cakephp,datasource,Php,Cakephp,Datasource,我用CakePHP为dynamoDB表创建了一个新的数据源。 创建、删除和更新工作查找(从模型创建时返回的数组除外) 我的表中的主键名为device_id,这是我创建新条目时得到的: $dataReturned = $deviceInfosModel->save($data, true, array_keys($data)); debug($dataReturned); array( 'DeviceInfos' => array( 'device_id' =
$dataReturned = $deviceInfosModel->save($data, true, array_keys($data));
debug($dataReturned);
array(
'DeviceInfos' => array(
'device_id' => false,
'shop_id' => 123,
'user_id' => 1234,
)
)
虽然条目创建得很好,但在返回的数组中,主键始终设置为false。我开始深入研究cakePHP的代码,发现在模型中有一行代码在创建时将主键设置为false。
我的主键是用唯一的散列随机生成的
有没有办法避免这种情况?如果有任何提示,我将不胜感激
dynamoDB表如下所示:
名称:设备信息
主id“设备id”(字符串)、用户id、店铺id
模型看起来是这样的:
<?php
class DeviceInfos extends AppModel {
public $useDbConfig = 'deviceInfos';
public $useTable = 'device_infos';
public $primaryKey = 'device_id';
protected $_schema = array(
'device_id' => array(
'type' => 'string',
'key' => 'primary',
'length' => 128,
),
'user_id' => array(
'type' => 'integer',
'length' => 255,
),
'shop_id' => array(
'type' => 'integer',
),
'timestamp' => array(
'type' => 'integer',
),
'timestampRange' => array(
'type' => 'integer',
)
);
}
是否为要保存的数据数组中的主键字段设置了随机哈希?如果是这样的话,那么这很可能不起作用,因为CakePHP的ORM只支持自动递增和uuid主键。相反,请尝试在数据源中生成主键散列,并在数据源的create()
中设置Model->id。感谢您的快速回答。我按照建议将模型id设置为create()方法中的键,现在可以工作了。