如何在Laravel中同时保存两个模型?

时间:2018-10-29 15:46:47

标签: php laravel

我想知道如何保存两个具有一种关系的模型。我不知道如何保存它,但我需要将患者模型的ID分配给我的体重秤模型。

这是我的PatientController。

obj.Roles.Add(_context.Roles.FirstOrDefault(c => c.Name == role));

我尝试使用此代码,但出现错误。

var Role = _context.Roles.FirstOrDefault(c => c.Name == role);
Role.User = obj;
_context.Entry(Role).State = EntityState.Modified;

3 个答案:

答案 0 :(得分:0)

您可以尝试如下操作:

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'birth' => 'required',
        'nacionality' => 'required',
        'adress' => 'required',
        'phone' => 'required',
        'living_method' => 'required',
        'responsable' => 'required',
    ]);

    //Create Patient
    $patient = new Patient;
    $patient->name = $request->name;
    $patient->save();
    $patient->scale()->create(['patient_id' => $patient->id, 'sd_abc_1_old' => $request->sd_abc_1_old]);
);

return redirect('/patients')->with('success', 'Paciente creado.');
}

如果模型使用了您所说的hasOne()关系,那么代码可以正常工作,当然需要进行一些修改。

答案 1 :(得分:0)

    public function store(Request $request)
    {
    $this->validate($request, [
    'name' => 'required',
    'birth' => 'required',
    'nacionality' => 'required',
    'adress' => 'required',
    'phone' => 'required',
    'living_method' => 'required',
    'responsable' => 'required',
]);

//Create Patient
    $patient = Patient::create([
    'name' => $request->input('name'),
 ]);
 $scale = Scale::create([
 'patient_id' => $patient->id, 
'sd_abc_1_old' => $request->sd_abc_1_old,
 ]);



 return redirect('/patients')->with('success', 'Paciente creado.');
}

答案 2 :(得分:-1)

首先创建并存储基本模型,然后将其引用保存相关模型

public function store(Request $request)
{
    $this->validate($request, [
        'name' => 'required',
        'birth' => 'required',
        'nacionality' => 'required',
        'adress' => 'required',
        'phone' => 'required',
        'living_method' => 'required',
        'responsable' => 'required',
    ]);

    //Create Patient
    $patient = new Patient;
    $patient->name = $request->input('name');
    $patient->save();

    $scales = new Scale;
    $scales->sd_abc_1_old = $request->input('sd_abc_1_old');

    $patient->scales()->save($scales);


    return redirect('/patients')->with('success', 'Paciente creado.');

}