Reputation: 568
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"
]
Upvotes: 1
Views: 2336
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
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