Laravel 5.3 用数组保存相关模型

问题描述 投票:0回答:1

我有一个用户模型和事件模型。

用户可以拥有/创建许多事件

事件属于用户。

我制作此表格只是为了演示:

当我 dd($request); 时我得到这个输出;

如何将其保存在我的数据库表事件中。 这些数组字段有问题...我需要创建一些除用户和事件之外的新表吗?

php laravel-5
1个回答
2
投票

是的,看来您需要另一张桌子。我刚刚对表名称进行了有根据的猜测,因为我不能 100% 确定这些时间和职业指的是什么,看起来您已经有一个存储职业的表,但以下是我可以看到的关系:

  • A user can have many events

  • An event belongs to a user

  • An event has many timeslots

  • A timeslot belongs to an event

  • A profession has many timeslots

  • A timeslot has many professions

因此,您的活动和职业(如果您将其称为其他名称,请不要担心)表应如下所示:

事件(id,user_id,名称,开始,结束);

职业(id,职业,..);

并且您需要添加一个额外的表:

time_slots(id, event_id, professional_id, amount, from, to, hours)

然后在模型中设置这些关系。

编辑

创建存储方法的基本方法是使用如下关系:

public function store(Request $request){
   // Get the request as an array
   $request = $request->all();
   // create a new event
   $event = Event::create($request);
   
   // Map timeslots to an array of Timeslot objects:
  $timeslots = array_map(function($personalId, $amount, $from, $to, $hours) {
      return new App\Timeslot($personalId, $amount, $from, $to, $hours);
  }, $request['personal_id'], $request['amount'], $request['from'], $request['to'], $request['hours']);

   // Save all timeslots for the event
   $event->timeslots()->saveMany($timeslots)
}

我还没有尝试过该代码,但它应该为您指明正确的方向。你应该看一下 Laravel 关系来了解它是如何工作的:

https://laravel.com/docs/5.3/eloquent-relationships#the-save-method

© www.soinside.com 2019 - 2024. All rights reserved.