Laravel - 插入数据库,可选字段链

时间:2016-07-06 06:27:46

标签: php laravel chaining

我的应用中的每个用户都可以添加约会。约会必须包含labelstatus。他们之间建立了一些关系,如下所示。每个用户都可以添加自己的labelsstatuses以及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);
}

0 个答案:

没有答案