Reputation: 101
This is my controller and I'm getting syntax error when using foreach in controller
namespace App\Http\Controllers;
use DB;
class course_controller extends Controller {
public function show_details() {
$prospects = DB::table('prospect')->get();
foreach ($prospects as $prospect) {
DB::table('course_prospect')->insert(['prospect_id' =>
$prospect->id, 'course_id' => $prospect->course_intrested])
};
}
}
Upvotes: 2
Views: 67
Reputation: 1379
You've misplaced the ;
and that caused the issue
And also I'm recommending you to use the associated model instead of DB
just like below
use App/Prospect;
use App/CourseProspect;
class course_controller extends Controller {
public function show_details() {
$prospects = Prospect::all();
foreach ($prospects as $prospect) {
CourseProspect::create([['prospect_id' =>
$prospect->id, 'course_id' => $prospect->course_intrested]]);
};
}
}
Upvotes: 0
Reputation: 10071
The semicolon(;
) is missing in your insert
Query:
foreach ($prospects as $prospect){
DB::table('course_prospect')->insert([
'prospect_id' => $prospect->id,
'course_id' => $prospect->course_intrested
]); //You missed the semicolon here
} //remove semicolon from here
The syntax for insert method for inserting records into the database
The Syntax for foreach:
foreach($prospects as $prospect){
}
Upvotes: 0
Reputation: 11
foreach ($prospects as $prospect) {
DB::table('course_prospect')->insert(array('prospect_id' => $prospect->id, 'course_id' => $prospect->course_intrested));
}
Upvotes: 0
Reputation: 92
public function show_details() {
$prospects = DB::table('prospect')->get();
foreach ($prospects as $prospect) {
DB::table('course_prospect')->insert(['prospect_id' =>
$prospect->id, 'course_id' => $prospect->course_intrested]); //Add semicolon here
}
}
Upvotes: 1
Reputation: 26258
You misplaced a semicolon, check here:
foreach ($prospects as $prospect) {
DB::table('course_prospect')->insert(['prospect_id' =>
$prospect->id, 'course_id' => $prospect->course_intrested])
}; <-- this one
Change it to:
foreach ($prospects as $prospect) {
DB::table('course_prospect')->insert(['prospect_id' =>
$prospect->id, 'course_id' => $prospect->course_intrested]);
}
and this is not a great idea to trigger a insert query on every iteration, instead create an array and save it in one query.
Upvotes: 0
Reputation: 3065
You need to add semi-colon after insert method.
namespace App\Http\Controllers;
use DB;
class course_controller extends Controller {
public function show_details() {
$prospects = DB::table('prospect')->get();
foreach ($prospects as $prospect) {
DB::table('course_prospect')->insert(['prospect_id' =>
$prospect->id, 'course_id' => $prospect->course_intrested]); // add semicolon here
} // don't need semi-colon here
}
}
Upvotes: 1