I want to save students course information into database courses table. Student can add multiple course, class time and section at a time using a form. Here is details of courses table:
**id, nsu_id course, section, class_start, class_end**
Form (View)
<form method="POST" action="/store">
@csrf
{{-- clone start from here --}}
<div class="parent">
<div id="form-set">
<div class="form-group row">
<label for="course" class="col-md-4 col-form-label text-md-right">{{ __('Course & Section') }}</label>
<div class="col-md-3">
<select type="text" class="form-control" name="course[]">
<option>Course</option>
<option>cse 115</option>
<option>cse 215</option>
<option>cse 311</option>
<option>cse 411</option>
</select>
</div>
<div class="col-md-3">
<select type="number" class="form-control" name="section[]">
<option>Section</option>
<option>1</option>
<option>2</option>
<option>3</option>
<option>4</option>
</select>
</div>
</div>
<div class="form-group row">
<label for="Class Timing" class="col-md-4 col-form-label text-md-right">{{ __('Class Timing') }}</label>
<div class="col-md-3">
<select type="text" class="form-control" name="class_start[]">
<option>Start</option>
<option>08:00 AM</option>
<option>09:40 AM</option>
<option>11:20 AM</option>
<option>01:00 PM</option>
<option>02:40 PM</option>
<option>04:20 PM</option>
</select>
</div>
<div class="col-md-3">
<select type="text" class="form-control" name="class_end[]" >
<option>End</option>
<option>9:30</option>
<option>11:10</option>
<option>12:50</option>
<option>2:30</option>
<option>4:10</option>
<option>5:50</option>
</select>
</div>
</div>
</div>
</div>
<div class="form-group row justify-content-center" style="margin-top: -11%">
<div class="col-md-10" style="visibility: hidden"></div>
<div class="col-md-2">
<button class="btn btn-xs btn-success" id="add">Add</button>
</div>
</div>
<script type="text/javascript">
$(document).ready(function () {
$('#add').click(function(e) {
e.preventDefault();
$("#form-set").clone().appendTo(".parent");
});
});
</script>
{{-- Clone end here --}}
<div class="form-group row">
<label for="nsu_id" class="col-md-4 col-form-label text-md-right">{{ __('NSU ID') }}</label>
<div class="col-md-6">
<input type="number" required class="form-control" name="nsu_id" placeholder="Exp. 1520836042">
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</div>
</form>
Model
class Course extends Model
{
protected $table='courses';
protected $fillable=[
'nsu_id','course','section','class_start','class_end'
];
}
Migration
public function up()
{
Schema::create('courses', function (Blueprint $table) {
$table->increments('id');
$table->integer('nsu_id');
$table->string('course');
$table->integer('section');
$table->string('class_start');
$table->string('class_end');
$table->timestamps();
});
}
This is what I have done to controller and i am getting Array to string conversion exception.
public function store(Request $request)
{
$data[]=$request->all();
//dd($data);
$courseData=[];
foreach($data as $data){
$pointData[]=[
'nsu_id'=>$data['nsu_id'],
'course'=>$data['course'],
'section'=>$data['section'],
'class_start'=>$data['class_start'],
'class_end'=>$data['class_end'],
];
}
DB::table('courses')->insert($courseData);
return redirect()->to('/home');
}
When i am trying get the value using helper function dd($data);
array:1 [▼
0 => array:6 [▼
"_token" => "2AspZiawULQy4fMikkBTRzjvUxPVnZPPonJrZAUy"
"course" => array:2 [▼
0 => "cse 115"
1 => "cse 215"
]
"section" => array:2 [▼
0 => "1"
1 => "2"
]
"class_start" => array:2 [▼
0 => "08:00 AM"
1 => "09:40 AM"
]
"class_end" => array:2 [▼
0 => "9:30"
1 => "11:10"
]
"nsu_id" => "1520836042"
]
]
Error: Array to string conversion (SQL: insert into courses (class_end, class_start, course, nsu_id, section) values (9:30, 08:00 AM, cse 115, 1520836042, 1))
Any kind of help will be highly appreciated