我有以下有很多通过关系
Alert AlertsElement Search
id id id
name alert_id link
search_id
ordering
Run Code Online (Sandbox Code Playgroud)
这是我的模特
class Alert extends AppModel {
var $name = 'Alert';
var $hasMany = array('AlertsElement');
class AlertsElement extends AppModel {
var $name = 'AlertsElement';
var $belongsTo = array('Alert','Search');
class Search extends AppModel {
var $name = 'Search';
var $hasMany = array('AlertsElement');
Run Code Online (Sandbox Code Playgroud)
这是我用来保存的测试代码 -
$d = array();
$d['Alert']['id'] = 1976;
$d['Search']['id'] = 107;
$d['AlertsElement']['ordering'] = 2;
$this->Alert->create();
$this->Alert->saveAll($d);
Run Code Online (Sandbox Code Playgroud)
我收到此错误 -
Cannot use a scalar value as an array [CORE/cake/libs/model/model.php, line 1696]
Run Code Online (Sandbox Code Playgroud)
alertselement中包含订单但外键设置为0的行条目
有任何想法吗 ?
谢谢,亚历克斯
为了保存hasMany关系saveAll,关联的hasMany模型数据(在本例中$d['AlertsElement'])需要是关联数组的索引数组,因此:
$d = array(
'Alert' => array(
'id' => 1976
),
'AlertsElements' => array(
0 => array(
'ordering' => 2
)
)
);
$this->Alert->saveAll($d);
Run Code Online (Sandbox Code Playgroud)
请注意,由'ordering'键及其值组成的关联数组已向下移动到索引数组中.这是hasMany在单个saveAll操作中保存关联数据所需的格式,因为无论您是要保存一个还是十个关联记录,此格式都会正常扩展.