Php 雄辩的拉拉维尔,克隆实体
我正试图克隆一个实体和一对一的关系。出于某种原因,$entity->hasManyRelation()不是一个函数:/ 这是我的密码Php 雄辩的拉拉维尔,克隆实体,php,laravel,eloquent,Php,Laravel,Eloquent,我正试图克隆一个实体和一对一的关系。出于某种原因,$entity->hasManyRelation()不是一个函数:/ 这是我的密码 $clonedWorksheet = Worksheet::where('id', $id)->get()->load('records'); $worksheet = new Worksheet; $worksheet->employee_id = $request->employee; $worksheet->workday
$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);
}
还有其他想法吗,或者我做错了什么?问题就在这里
foreach ($clonedWorksheet->records() as $clonedRecord) {
records()是模型中执行数据库查询的方法。返回是一个雄辩的关系对象。你想要:
foreach($clonedWorksheet->records as $clonedRecord) {
或
模型有一个,这将减少你的循环体相当多,只是:
$record = $cloneRecord->replicate();
$record->worksheet_id = $worksheet->id;
$record->save();
从foreach中的记录中删除
()
,这样它将访问实际记录而不是函数$工作表->记录()->保存($record);甚至用克隆魔法的方法啊,我找到了。我使用get()代替first(),get返回一个集合。谢谢你们,tho.)您需要先将clonedsheet
放在foreach next put relations上。对于此功能,您可能还需要查看->replicate()
方法,因为它将为您节省大量的行数。至于最初的问题,我相信已经得到了回答。
$record = $cloneRecord->replicate();
$record->worksheet_id = $worksheet->id;
$record->save();