我有一个用户模型和事件模型。
用户可以拥有/创建许多活动
活动属于用户。
我为演示制作了这张表格:
当我dd($ request);
时,我得到了这个输出如何在我的数据库表事件中保存它。 这些数组字段是问题...我需要制作一些除用户和事件之外的新表吗?
答案 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