cakephp saveMany 使用 $fieldList (无表单)
Posted
技术标签:
【中文标题】cakephp saveMany 使用 $fieldList (无表单)【英文标题】:cakephp saveMany using $fieldList (no form) 【发布时间】:2012-06-16 02:46:12 【问题描述】:我有这个 $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 任务中获取它非常麻烦)
我整晚都想弄清楚,请您指出正确的方向吗?
【问题讨论】:
【参考方案1】:恕我直言,每个数组中的键都不是数据库表中的有效字段。它们应该代表与您的表字段相同的名称。 当您从 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 Docs
$this->Dir->saveMany($data);
【讨论】:
谢谢你们;我要做的是遍历我的索引数组并构建关联结构;会回来的。 'Windows', 'Forum'=>'phpBB', 'Person'=>'Jay' ); ?> 正如怀疑的那样,我使用了错误的 $data 结构。 Goggled 如何将我的索引数组转换为关联数组,然后保存:` foreach ($dataIndexed as $num_linea => $line_of_text) $data[$num_linea]['name'] = $dataIndexed[$num_linea][1]; $data[$num_linea]['dir_dataname'] = $dataIndexed[$num_linea][0]; $data[$num_linea]['qca_interv'] = $dataIndexed[$num_linea][2];` 感谢您的指导。 ! 我循环我的索引数组如下。你有什么改善它的建议吗?foreach ($dataIndexed as $num_linea => $line_of_text) $data[$num_linea]['name'] = $dataIndexed[$num_linea][1]; $data[$num_linea]['dir_dataname'] = $dataIndexed[$num_linea][0]; $data[$num_linea]['qca_interv'] = $dataIndexed[$num_linea][2];
【参考方案2】:
您可以通过以下方式获取日志
debug($this->Dir->getDataSource()->getLog());
您似乎错误地使用了fieldList
。 fieldList
是要被列入白名单以保存到数据库的字段列表,而不是您正在使用的“映射”。
您需要在数组中为每条记录指定field => value
对,而不是数字索引。我可能是错的,但我从未见过,而且根据文档,它看起来不是那样的。
【讨论】:
谢谢trigran,我通过你的解决方案得到了sql日志。以上是关于cakephp saveMany 使用 $fieldList (无表单)的主要内容,如果未能解决你的问题,请参考以下文章
cakephp saveMany 使用 $fieldList (无表单)