让我解释一下我的问题。我目前正在使用Laravel 5.0。这是我的结构
- 表:bgts,型号:Bgt,控制器:Bgt控制器
- 表:bgthistories,型号:BgtHistory
现在我想做这些:
每次在bgts表中创建新项目时,我都想复制并插入bgthistories表。然后,每次更新记录时,我都会再复制一个版本,仍然插入到bgthistories中。
这里是store()
方法。
public function store(Request $request) {
$bgt = new Bgt();
$history = $this->coppy($bgt);
$uploader = new UploadController('/data/uploads/bgt');
$bgt->name = $request['name'];
$bgt->avatar = $uploader->avatar($request);
$bgt->attachments($uploader->attachments($request));
//dd($bgt);
$bgt->save();
$history->save();
return redirect('bgt');
}
这就是应对措施:
public function coppy($bgt) {
$array = $this->$bgt->toArray();
$version = new BgtHistory();
foreach($array as $key => $value) {
$version->$key = $value;
}
return $version;
}
我已经创建了迁移表。一切都准备好了。但是,当我打电话给时
$bgt->save();
$history->save();
它不起作用。如果我删除$history->save();
,它会创建新的记录。我认为Laravel提供的Model中内置的save()
方法有问题。有人能告诉我怎么解决这个问题吗。
我尝试构建原始查询,然后通过DB:statement
执行它,但它也不起作用。每次尝试使用DB执行任何操作都是失败的。
请在重新发明车轮之前进行研究。
(相同的东西不同的站点,以防一个站点出现故障)
http://packalyst.com/packages/package/mpociot/versionable
https://packagist.org/packages/mpociot/versionable
https://github.com/mpociot/versionable
干杯,祝你好运;)