简体   繁体   English

雄辩的laravel,克隆实体

[英]Eloquent laravel, clone entity

I'm trying to clone an entity and the OneTomany relation too. 我也在尝试克隆一个实体和OneTomany关系。 For some reason, the $entity->hasManyRelation() is not a function. 由于某些原因,$ entity-> hasManyRelation()不是函数。 :/ :/

Here's my code.: 这是我的代码:

$clonedWorksheet = Worksheet::where('id', $id)->get()->load('records');

$worksheet = new Worksheet;

$worksheet->employee_id = $request->employee;
$worksheet->workday = $request->workday;

$worksheet->save();

foreach ($clonedWorksheet->records() as $clonedRecord) {
  $record = new Record;

  $record->from = $clonedRecord->from;
  $record->to = $clonedRecord->to;
  $record->estimated = $clonedRecord->estimated;
  $record->place_id = $clonedRecord->place_id;
  $record->worksheet_id = $worksheet->id;
  $record->vehicle_id = $clonedRecord->vehicle_id;
  $record->tool_id = $clonedRecord->tool_id;
  $record->job_id = $clonedRecord->job_id;
  $record->comment = $clonedRecord->comment;

  $worksheet->records()->save($record);
}

Any other idea, or what am I doing wrong? 还有其他想法,或者我做错了什么?

The problem is here. 问题在这里。

foreach ($clonedWorksheet->records() as $clonedRecord) {

The records() is the method in the model that does the database query. records()是模型中执行数据库查询的方法。 The return is an eloquent relationship object. 回报是雄辩的关系对象。 You want: 你要:

foreach($clonedWorksheet->records as $clonedRecord) {

Or 要么

foreach ($clonedWorksheet->records()->get() as $clonedRecord) {

Models have a replicate function , which would cut the body of your loop down quite a bit to just: 模型具有复制函数 ,该函数会将循环的主体缩减为:

$record = $cloneRecord->replicate();
$record->worksheet_id = $worksheet->id;
$record->save();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM