Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
CakePHP模型在创建时将主键设置为false_Php_Cakephp_Datasource - Fatal编程技术网

CakePHP模型在创建时将主键设置为false

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' =

我用CakePHP为dynamoDB表创建了一个新的数据源。 创建、删除和更新工作查找(从模型创建时返回的数组除外)

我的表中的主键名为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()方法中的键,现在可以工作了。