Laravel 5.3 用数组保存相关模型

Laravel 5.3 Save related model with array

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

一个用户可以have/create很多事件

一个事件属于用户。

我做了这个表格只是为了演示:

我在 dd($request);

时得到了这个输出

如何将此保存在我的数据库 table 事件中。 这些数组字段有问题...我需要制作一些新的 table 除了用户和事件吗??

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

  • 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

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

events(id, user_id, name, start, end);

professions(id, profession,..);

并且你需要额外添加一个table:

time_slots(id, event_id, profession_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