skip to Main Content

I have a function in a controller like this:

DB::transaction(function () use ($request) {
            for ($parts=0; $parts < count($request->name) ; $parts++) {
                $parts_info = new PartsInfo; 
                $parts_info -> part_id = $request -> id;
                $parts_info -> name = $request -> name[$parts];
                $parts_info -> qty = $request -> qty[$parts];
                $parts_info -> price = $request -> price[$parts];
                $parts_info -> save();
            }
        });

Now I want to update the records. How do I do that? Here multiple records have the same part_id which has a one-to-many relationship with another table.
Note: Tried using $parts_info = PartsInfo::where('parts_id', $request->id)->get(); and without get()

2

Answers


  1. Try this one

      DB::transaction(function () use ($request) {
            for ($parts=0; $parts < count($request->parts) ; $parts++) {
            
              PartsInfo::where("parts_id", $request->id)->update([
                 "name" => $request->name[$parts],
                  "qty" =>  $request->qty[$parts],
                  "price" => $request->price[$parts]
                ]);
    
            }
        });
    
    Login or Signup to reply.
  2. try this one

     DB::transaction(function () use ($request) {
            for ($parts=0; $parts < count($request->parts) ; $parts++) {
            
              PartsInfo::where('id', $request->id[$parts])->update([
                 "name" => $request->name[$parts],
                  "qty" =>  $request->qty[$parts],
                  "price" => $request->price[$parts]
                ]);
    
            }
        });
    

    You will have to check it with the id and because you are checking it with parts_id so it will not work

    or You can first delete the child records and then recreate it

        DB::transaction(function () use ($request) {
            $count = $request->parts;
            PartsInfo::where('parts_id', $request->id)->delete();
            for ($parts=0; $parts < $count ; $parts++) {
                PartsInfo::create([
                    'parts_id' => $request->id,
                    "name" => $request->name[$parts],
                    "qty" =>  $request->qty[$parts],
                    "price" => $request->price[$parts]                    
                ]);
            }
        });
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search