Laravel 5.3使用数组保存相关模型

时间:2016-10-28 21:02:24

标签: laravel-5.3

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

用户可以拥有/创建许多活动

活动属于用户。

我为演示制作了这张表格:

enter image description here

当我dd($ request);

时,我得到了这个输出

enter image description here

如何在我的数据库表事件中保存它。 这些数组字段是问题...我需要制作一些除用户和事件之外的新表吗?

1 个答案:

答案 0 :(得分:2)

是的,看起来你需要另一张桌子。我刚刚对表名进行了有根据的猜测,因为我不是百分之百地确定这些时间和专业所指的是什么,看起来你已经有了一个存储职业的表,但这里是我能看到的关系:< / p>

  • 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,name,start,end);

     

职业(id,profession,..);

你需要添加一个额外的表格:

  

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