在单个请求中双插入数据


Laravel 5.2 | double insert data in single request

我有dosen表(iddosen, user_id, namadosen, notelpdosen, fotodosen等)

我尝试注册一个用户+上传照片,但它有2行插入。

  1. 所有列为空,除了"fotodosen"
  2. 所有行都有数据,除了"fotodosen"。

这是我的方法

public function store(CreateDosenRequest $request)
{
    $user = User::create([
        'name' => $request->input('name'),
        'username' => $request->input('username'),
        'email' => $request->input('email'),
        'password' => $request->input('password'),
        'admin' => $request->input('admin'),
     ]);
      $dosen = Dosen::create([
        'iddosen' => $request->input('iddosen'),
        'nipy' => $request->input('nipy'),
        'namadosen' => $user->name,
        'user_id' => $user->id,
        'alamatdosen' => $request->input('alamatdosen'),
        'notelpdosen' => $request->input('notelpdosen'),
        'tempatlahirdosen' => $request->input('tempatlahirdosen'),
        'tanggallahirdosen' => $request->input('tanggallahirdosen'),
        'agamadosen' => $request->input('agamadosen'),
    ]);
        if ($request->hasFile('image')) {
            $data = $request->input('image');
            $photo = $request->file('image')->getClientOriginalName();
            $destination = public_path() . '/uploads/';
            $request->file('image')->move($destination, $photo);
            $data['fotodosen'] = $photo;
            Dosen::create($data);
}
    return redirect('admin/dosen')->with('message', 'Data berhasil ditambahkan!');    
}

请纠正我的代码

您在这里为每次使用的新行使用了两次Dosen::create。附加$data请求或尝试:

public function store(CreateDosenRequest $request)
{
    $user = User::create([
        'name'     => $request->input('name'),
        'username' => $request->input('username'),
        'email'    => $request->input('email'),
        'password' => $request->input('password'),
        'admin'    => $request->input('admin'),
    ]);
    if ($request->hasFile('image')) {
        $data        = $request->input('image');
        $photo       = $request->file('image')->getClientOriginalName();
        $destination = public_path() . '/uploads/';
        $request->file('image')->move($destination, $photo);
        $data['fotodosen'] = $photo;
    }
    $dosen = Dosen::create([
        'iddosen'           => $request->input('iddosen'),
        'nipy'              => $request->input('nipy'),
        'namadosen'         => $user->name,
        'user_id'           => $user->id,
        'alamatdosen'       => $request->input('alamatdosen'),
        'notelpdosen'       => $request->input('notelpdosen'),
        'tempatlahirdosen'  => $request->input('tempatlahirdosen'),
        'tanggallahirdosen' => $request->input('tanggallahirdosen'),
        'agamadosen'        => $request->input('agamadosen'),
        'fotodosen'         => $photo, //you have to add it hear
    ]);
    return redirect('admin/dosen')->with('message', 'Data berhasil ditambahkan!');
}