保存倍数 Cakephp 3.x
Posted
技术标签:
【中文标题】保存倍数 Cakephp 3.x【英文标题】:Save Multiples times Cakephp 3.x 【发布时间】:2015-08-24 10:40:47 【问题描述】:我想做的是多次保存我的数据。为了做到这一点,我把这段代码放在我的控制器中:
foreach ($tw->statuses as $t)
$tw->image = $t->user->profile_image_url;
$tw->name = $t->user->name;
$tw->screenname = $t->user->screen_name;
$tw->message = $t->text;
$tw->Fil_id = $FiltreId;
$this->Twes->save($tw);
return $this->redirect(['action' => 'index']);
但是当执行完成时,我只找到保存在我的数据库中的最后一条记录,而没有找到其他记录。谁能帮我 ?
【问题讨论】:
【参考方案1】:这可能是由于各种原因造成的:
-
变量
$tw->statuses
只包含一个状态。
您存储数据的表有一个唯一索引,该索引在第二次插入数据时发生冲突。
您能否提供更多信息(例如表描述或命名变量在迭代之前的 var_dump)以准确指出发生了什么?
【讨论】:
感谢您的回复。当我调试 $tw 时,它包含多个状态(至少 5 个)。我认为问题在于使用 save();你说的数据发生冲突,因为在数据库中我发现记录的是最后一个数据。 @Sam 那么问题也可能是在foreach
内部你正在改变一个$tw
的实例,也许这就是为什么要保存同一行,因此你可以尝试做在foreach
的第一行之后? $test = clone $tw;
$test->image = $t->user...
等等【参考方案2】:
我找到了问题所在。如您所见,我更新了代码,并在 foreach 中使用了 TableRegistry 并使用了 newEntity:
$oPeople = TableRegistry::get('Tweets');
$oQuery = $oPeople->query();
foreach ($tw->statuses as $t)
$test = array($FiltreId,$t->text,$t->user->name,$t->user->screen_name,$t->user->profile_image_url,null,null,null,null,null);
$tw = $oPeople->newEntity($test);
$tw->image = $t->user->profile_image_url;
$tw->name = $t->user->name;
$tw->screenname = $t->user->screen_name;
$tw->message = $t->text;
$tw->Fil_id = $FiltreId;
$this->Twes->save($tw);
return $this->redirect(['action' => 'index']);
这样保存所有数据,而不仅仅是最后一个。
【讨论】:
以上是关于保存倍数 Cakephp 3.x的主要内容,如果未能解决你的问题,请参考以下文章