我有2对类似的表(表1和表2,表A和表B)。
Table1有很多Table2。表2属于表1。换句话说,Table1和Table2之间存在一对多的关系。 TableA和TableB具有与Table1和Table2相同的一对多关系。
我想将Table1中的一行加上Table2中的所有相关行移到匹配的表对TableA和TableB中。
传输表格行和关联行的最佳方法是什么?我是否使用save()逐行将每一行保存到新表中,或者有没有办法使用saveall()一次保存所有行?
如果表字段相似但不完全相同,使用saveall()进行数据传输是否有问题。在表对之间,一些行是相同的,一些行是不同的。
我正在使用Cakephp 2.4.5。谢谢你的帮助。
答案 0 :(得分:1)
您需要使用saveAssociated
来解决此问题,但如果您的表格不完全相同,那么您首先需要将数据转换为可管理的数据。这是一个例子:
$table_1 = $this->Table_1->find('first', array('conditions => array('Table_1.whatever' => 'something')));
// here you can manually build the data you need to save.
$transfer_data['Table_A'] = $table_1['whatever you needed to change'];
您可能需要一个for循环或其他东西来将您的数据转换为表a和b所需的略有不同的版本,但不知道有什么区别,我无法编写执行转换的代码。转换完成后,您可以使用saveAssociated
按照手册中的说明保存您的保存。