Laravel:两个模型合一控制器方法



让我解释一下我的问题。我目前正在使用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

干杯,祝你好运;)

最新更新