Красноречивый ларавелла, клонированная сущность - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь клонировать сущность и отношение OneTomany тоже. По какой-то причине $ entity-> hasManyRelation () не является функцией. : /

Вот мой код ::1003*

$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);
}

Любая другая идея, или что я делаю не так?

1 Ответ

0 голосов
/ 19 февраля 2019

Проблема здесь.

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

records () - это метод в модели, который выполняет запрос к базе данных. Возврат является красноречивым объектом отношений. Вы хотите:

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

Или

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

Модели имеют функцию репликации , которая значительно сократила бы тело вашего цикла до:

$record = $cloneRecord->replicate();
$record->worksheet_id = $worksheet->id;
$record->save();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...