2017-05-04 5 views
0

Verwenden von Laravel eloquent zum Auswählen eines bestimmten Feldwerts. Allerdings finde ich mich mit diesem Fehler handeltAuswählen von Daten aus Tabellen mit Laravel eloquent

SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '[{"id":1}]' for column 'department_id' at row 1 (SQL: insert into `opportunities` (`category`, `opportunity`, `vacancies`, `department_id`, `updated_at`, `created_at`) values (Attachement, Assistant, 2, [{"id":1}], 2017-05-04 02:12:04, 2017-05-04 02:12:04))

Feldwert für department_id int sein sollte, die aus einer anderen Tabelle, wie unten

public function store(Request $request) 
{ 
    // return $request->all(); 

     $this->validate($request,[ 
     'department'=>'required', 
     'category'=>'required', 
     'description'=>'required|string', 
     'positions'=>'required|integer', 
     ]); 
    //dd($request); table('departments')->where('dep_name', '$dep') 
    $dep = $request->department; 
    $department=Department::all(); 
    //dd($department); 

    $department_id = Department::select('id')->where('dep_name','=', $dep)->get(); 

    // return $department_id; 

    $newOpportunity = Opportunity::create(
     [ 
      'category'=>$request->category, 
      'opportunity'=>$request->description, 
      'vacancies'=>$request->positions, 
      'department_id'=>$department_id, 
     ] 
     ); 
    $newOpportunity ->save(); 

    return redirect('admin/'); 
} 
+0

ändere diese Zeile 'department_id' => $ department_id [0] -> id, – JYoThI

Antwort

0

Ihre Weitergabe Array sind Zeichnung als Wert Spalt derpartment_id. Id ist innerhalb des Arrays Sie müssen es für den Zugriff auf ähnliche

'department_id'=>$department_id[0]->id, 
0

Die Aussage

Department::select('id')->where('dep_name','=', $dep)->get(); 

ein Collection zurückgibt.

Sie benötigen die id eines einzelnen Datensatzes. Versuchen Sie, diese

$department = Department::where('dep_name','=', $dep)->first(); 

if($department != null) { 
    $newOpportunity = Opportunity::create(
     [ 
      'category'=>$request->category, 
      'opportunity'=>$request->description, 
      'vacancies'=>$request->positions, 
      'department_id'=>$department->id, 
     ] 
    ); 
    $newOpportunity ->save(); 
} 
0

Ich glaube, Sie müssen Ihren Code aktualisieren, wie:

Wenn Sie id für einzelnen Datensatz benötigen:

$department_id = Department::where('dep_name','=', $dep)->first(); 

$newOpportunity = Opportunity::create(
      [ 
       'category'=>$request->category, 
       'opportunity'=>$request->description, 
       'vacancies'=>$request->positions, 
       'department_id'=>$department_id->id, 
      ] 
     ); 

oder Sie benötigen id für mehrere Datensatz dann:

$department_id = Department::select('id')->where('dep_name','=', $dep)->get(); 

foreach($department_id as $department_ids){ 

    $newOpportunity = Opportunity::create(
      [ 
       'category'=>$request->category, 
       'opportunity'=>$request->description, 
       'vacancies'=>$request->positions, 
       'department_id'=>$department_ids->id, 
      ] 
     ); 
} 

Hoffe das hilft dir.

0

Sie brauchen nicht wirklich die Sammlung. Sie benötigen einen einzelnen Datensatz mit einem Attribut - id. Ihr Code sehr schmutzig. Versuchen Sie, vermeiden abrufen nicht verwendeten Daten wie folgt aus: $department=Department::all();

-Code unten ruft aus der Datenbank EINZIGE Datensatz, ist dies der richtige Weg:

$department = Department::select('id')->where('dep_name','=', $request->department)->first(); 

Voll Code:

public function store(Request $request) 
{ 
    $this->validate($request,[ 
     'department' => 'required', 
     'category' => 'required', 
     'description' => 'required|string', 
     'positions' => 'required|integer' 
    ]); 

    $department = Department::select('id')->where('dep_name','=', $request->department)->first(); 
    if($department) { 
     $newOpportunity = Opportunity::create([ 
      'category' => $request->category, 
      'opportunity' => $request->description, 
      'vacancies' => $request->positions, 
      'department_id' => $department->id, 
     ]); 
     $newOpportunity->save(); 
    } 

    return redirect('admin/'); 
} 
Verwandte Themen