rafitio
rafitio

Reputation: 568

Laravel save multiple form to database

I want to save multiple input form to database with laravel, when i checking with dd it's fine, but how to save it into database ?

here my controller

 public function store(Request $request){
  $input = Input::all();
    $servicedata = $input['service_id'];
    $employeedata = $input['emp_id'];
    $allOrder = array();

    foreach ($employeedata as $key => $val) {
        $detailorder = new DetailOrder;
        $detailorder->employee_id = $input['emp_id'][$key];
        $detailorder->mandays = $input['mandays'][$key];

        foreach ($servicedata as $key => $val) {

            $detailorder->sales_order_id = $request->sales_order_id;
            $detailorder->serivce_id = $input['service_id'][$key];
            $detailorder->order_type = $input['order_type'][$key];
            $detailorder->select_plan = $input['select_plan'][$key];
            $detailorder->qty = $input['qty'][$key];
            $detailorder->unit_price = $input['unit_price'][$key];
            $detailorder->note = $input['note'][$key];
        }
        $allOrder[]=$detailorder;
    }
     //dd($allOrder);
    $allOrder->save();
}

when i try to use $detailorder->insert($allOrder);, I'm getting error like this

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'field list' (SQL: insert into detail_orders (0) values ({"employee_id":"2","mandays":"3","sales_order_id":"1","serivce_id":"2","order_type":"change","select_plan":"plan 2","qty":"1","unit_price":"300","note":"test 2"}))

--> edited

my dd result

array:2 [?
  0 => DetailOrder {#262 ?
#attributes: array:9 [?
  "sales_order_id" => "4"
  "serivce_id" => "1"
  "order_type" => "add"
  "select_plan" => ""
  "qty" => "1"
  "unit_price" => "200"
  "note" => ""
  "employee_id" => "2"
  "mandays" => "3"
]

1 => DetailOrder {#268 ?
#attributes: array:9 [?
  "sales_order_id" => "4"
  "serivce_id" => "2"
  "order_type" => "change"
  "select_plan" => ""
  "qty" => "1"
  "unit_price" => "300"
  "note" => ""
  "employee_id" => "2"
  "mandays" => "3"
]

my table capture enter image description here

Upvotes: 1

Views: 2336

Answers (2)

Md. Abutaleb
Md. Abutaleb

Reputation: 1645

In Order Model:

Protected $fillable = ['employee_id', 'mandays', 'sales_order_id', 'service_id', 'order_type', 'select_plan', 'qty', 'unit_price', 'note'];

At your controller, Please try to use a foreach loop for $allOrder outside of first foreach:

public function store(Request $request)
{
    $input = Input::all();
    $servicedata = $input['service_id'];
    $employeedata = $input['emp_id'];
    $allOrder = array();

    foreach ($employeedata as $key => $val) {
        $detailorder = new DetailOrder;
        $detailorder->employee_id = $input['emp_id'][$key];
        $detailorder->mandays = $input['mandays'][$key];

        foreach ($servicedata as $key => $val) {

            $detailorder->sales_order_id = $request->sales_order_id;
            $detailorder->serivce_id = $input['service_id'][$key];
            $detailorder->order_type = $input['order_type'][$key];
            $detailorder->select_plan = $input['select_plan'][$key];
            $detailorder->qty = $input['qty'][$key];
            $detailorder->unit_price = $input['unit_price'][$key];
            $detailorder->note = $input['note'][$key];
        }
        $allOrder[] = $detailorder;
    }
    //dd($allOrder);

    foreach ($allOrder as $order) {
        YourOrderModelName::create($order);
    }

}

Upvotes: 1

R P
R P

Reputation: 169

You can save inside the loop

public function store(Request $request){
 $input = Input::all();
 $servicedata = $input['service_id'];
 $employeedata = $input['emp_id'];
 $allOrder = array();

 foreach ($employeedata as $key => $val) {
    $detailorder = new DetailOrder;
    $detailorder->employee_id = $input['emp_id'][$key];
    $detailorder->mandays = $input['mandays'][$key];

    foreach ($servicedata as $key => $val) {

        $detailorder->sales_order_id = $request->sales_order_id;
        $detailorder->serivce_id = $input['service_id'][$key];
        $detailorder->order_type = $input['order_type'][$key];
        $detailorder->select_plan = $input['select_plan'][$key];
        $detailorder->qty = $input['qty'][$key];
        $detailorder->unit_price = $input['unit_price'][$key];
        $detailorder->note = $input['note'][$key];
    }
    $detailorder->save();
 }
}

Upvotes: 2

Related Questions