我的应用中的每个用户都可以添加约会。约会必须包含label
和status
。他们之间建立了一些关系,如下所示。每个用户都可以添加自己的labels
和statuses
以及appointments
。
在我的约会创建表单中,我将显示用户标签和状态的下拉列表。但是,在这些下拉列表下方也是一个空字段,因此用户可以决定动态创建新标签或状态。
我的问题是,是否可以一次性(链接)将约会保存在数据库中,以便保存新标签和/或状态(如果提交了任何一个)?我目前的保存方法是这样的:
Auth::user()->appointments()->create($request->all());
但这不包括用户提交的任何新标签或状态。这可能是我想要的,或者我应该这样做呢?
if($request->label_name)
{
Auth::user()->labels()->create($request->label_name);
}
首先创建一个新标签,如果提交的话。然后是:
Auth::user()->appointments()->create([
$request->appointment->name,
$request->label_id // Figure out a way to get the last inserted label_id
]);
我问这个的原因是,因为我想保持简单,如果有一个简单的方法来实现这一点,那将是伟大的。这完全用于学习目的,所以任何答案都是一个很好的答案。
约会模式:
public function user()
{
return $this->belongsTo(User::class);
}
public function label()
{
return $this->hasOne(Label::class);
}
public function status()
{
return $this->hasOne(Status::class);
}
用户模型:
public function appointments()
{
return $this->hasMany(Appointment::class);
}
public function labels()
{
return $this->hasMany(Label::class);
}
public function statuses()
{
return $this->hasMany(Status::class);
}
标签&状态模型:
public function user()
{
return $this->belongsTo(User::class);
}
public function appointments()
{
return $this->belongsTo(Appointment::class);
}