Jazim Max
Jazim Max

Reputation: 101

Getting syntax error when using foreach in controller

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

Answers (6)

Sethu
Sethu

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

Udhav Sarvaiya
Udhav Sarvaiya

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

Omkar Shete
Omkar Shete

Reputation: 11

foreach ($prospects as $prospect) {
        DB::table('course_prospect')->insert(array('prospect_id' => $prospect->id, 'course_id' => $prospect->course_intrested));
    }

Upvotes: 0

Nandy
Nandy

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

Mayank Pandeyz
Mayank Pandeyz

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

Md.Sukel Ali
Md.Sukel Ali

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

Related Questions