我有一个用户模型和事件模型。
用户可以拥有/创建许多事件
事件属于用户。
我制作此表格只是为了演示:
当我 dd($request); 时我得到这个输出;
如何将其保存在我的数据库表事件中。 这些数组字段有问题...我需要创建一些除用户和事件之外的新表吗?
是的,看来您需要另一张桌子。我刚刚对表名称进行了有根据的猜测,因为我不能 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