Я использую таблицы пользователя, планирую и планирую детали. Где:Создание новых строк из результатов с помощью ORM
Пользователь:
public function plan_details()
{
return $this->hasMany('App\Plan_Detail');
}
public function plans()
{
return $this->hasMany('App\Plan');
План:
public function details()
{
return $this->hasMany('App\Plan_Detail');
}
Я пытаюсь создать новый план из существующего плана следующим образом:
public function store(Request $request)
{
$this->validate($request, [ 'title' => 'required',
'description' => 'required']);
$input = $request->all();
$plan_details = Plan_Detail::ofUser()->get();
$plan = new Plan($request->all());
DB::beginTransaction();
Auth::user()->plans()->save($plan);
try {
foreach ($plan_details as $k => $plan_detail)
Plan::find($plan['id'])->details()->save($plan_detail);
DB::commit();
} catch (Exception $e) {
Log::error("PGSQL plan detail " . $e->message());
DB::rollback();
session()->flash('message', 'Error al guardar el plan de entreno');
}
return redirect('plans');
}
Эта линия делает отредактируйте детали плана, чтобы больше не относиться к старому плану и войти в новый:
Plan :: find ($ plan ['id']) -> details() -> save ($ plan_detail);
Я переработан код для ОРМА несколько коммитов назад и теперь я обнаружил эту ошибку, я делал все поля в массиве, как перед сохранением:
foreach ($plan_details as $k => $plan_detail) {
+ $detail_line['exercise_id'] = $plan_detail['exercise_id'];
$detail_line['plan_id'] = $plan['id'];
Я не хотел бы вернуться к это, но не может думать о том, как связать Auth :: user с планом и с данными плана таким образом и создавать новые элементы.
Если я использую User-> plan_details(), мне нужно будет указать, какой plan_id.
Если я использую Запланировано> детали я должен указать user_id
Не могу это сделать?