2

我有这个 $data 数组:(建立在外壳上,而不是表单上)

(在这里调试)

array(
(int) 0 => array(
    (int) 0 => 's511013t',
    (int) 1 => 'id3422',
    (int) 2 => '1'
),
(int) 1 => array(
    (int) 0 => 's511013t',
    (int) 1 => 'id3637',
    (int) 2 => '1'
)
)

并使用 saveMany :

$this->Dir->saveMany($data, array( 'validate' => 'false', 'fieldList' => array('name','dir_dataname', 'project_id'))); 

保存失败,没有错误。

我不确定我的 $data 数组是否格式正确,(我很困惑它是否应该有另一个级别)我从 sql 选择等构建它。但是它确实包含我需要保存的所有信息,单个模型。

我正在从 Shell 运行所有这些,并且每次只要提供字段名称,它就可以保存一条记录:

// this works
$this->Dir->save(array('name' => $data[0][0], 'project_id' => $data[0][2], 'dir_dataname' => $data[0][1]));

已经阅读了保存您的数据,由于我的自定义 $data 格式,我真的很想使用 saveMany 和 fieldList。(我不想在我的 $data 上插入字段名称)。
(没有 sql_dump 显示,因为从 shell 任务中获取它非常麻烦)

我花了整个晚上试图弄清楚,你能给我指出正确的方向吗?

4

2 回答 2

2

恕我直言,每个数组中的键都不是数据库表中的有效字段。它们应该代表与您的表字段相同的名称。当您从 sql 构建数组时,输出应如下所示 - 关联数组:

array(
(int) 0 => array(
    (string) name => 's511013t',
    (string) dir_dataname => 'id3422',
    (string) project_id => '1'
),
(int) 1 => array(
    (string) name => 's511013t',
    (string) dir_dataname => 'id3637',
    (string) project_id => '1'
)
)

Cake2.0文档

$this->Dir->saveMany($data);
于 2012-06-16T12:15:47.840 回答
0

您可以通过以下方式获取日志

debug($this->Dir->getDataSource()->getLog());

看起来好像您使用fieldList不正确。fieldList是要被列入白名单以保存到数据库的字段列表,而不是您正在使用的“映射”。

您需要field => value在数组中为每条记录指定对,而不是数字索引。我可能是错的,但我从未见过,根据文档,它看起来不是那样的。

于 2012-06-16T05:07:35.523 回答