2016-04-20 2 views
1

Hallo Leute, ich bin neu in PhP und Laravel. Ich möchte eine Join-Abfrage in Laravel verwenden und habe den folgenden Code geschrieben, aber es gibt mir einen Fehler.Laravel Join Abfrage

$data = DB::table('employees') 
->join('contact_details', 'employees.id', '=','contact_details.employee_id') 
      ->join('education', 'employees.id', '=', 'education.employee_id') 
      ->join('addresses', 'employees.id', '=', 'addresses.employee_id') 
      ->select('employees.first_name','employees.id','employees.gender','education.id','education.school','education.subject','addresses.village') 
      ->where('employees.id', '=',$id) 


      ->get(); 
    return "$data"; 

und der Fehler ist

ErrorException in ProfileController.php line 66: 
Array to string conversion 

in ProfileController.php line 66 
at HandleExceptions->handleError('8', 'Array to string conversion',  'E:\xampp\htdocs\djiafg\app\Http\Controllers\ProfileController.php', '66',  array('id' => '72', 'data' => array())) in ProfileController.php line 66 
     at ProfileController->view('72') 
    at call_user_func_array(array(object(ProfileController), 'view'), array('id' => '72')) in Controller.php line 80 
    at Controller->callAction('view', array('id' => '72')) in  ControllerDispatcher.php line 146 
    at ControllerDispatcher->call(object(ProfileController), object(Route), 'view') in ControllerDispatcher.php line 94 
    at ControllerDispatcher->Illuminate\Routing\{closure}(object(Request)) 
    at call_user_func(object(Closure), object(Request)) in Pipeline.php line 52 
at Pipeline->Illuminate\Routing\{closure}(object(Request)) 
at call_user_func(object(Closure), object(Request)) in Pipeline.php line 103 
+1

Veröffentlichen Sie Ihre Fehler zu in Frage, und entfernen Sie das zusätzliche geklam- mert von '($ id)' dh '-> where ('employees.id', '=', $ id)' –

+0

@Nazir Noori: Es scheint, $ ID wäre mit Klammern, aber Ihr Fehlerbericht kann gut die tatsächliche Situation klären. – naf4me

+0

Buchen Sie den Fehler nicht. Das wäre zu einfach. – Strawberry

Antwort

0

nur versuchen, den Raum vor dem Wählen zu entfernen und den in dem Zustand wie folgt durch

$data = DB::table('employees') 
    ->join('contact_details', 'employees.id', '=','contact_details.employee_id') 
    ->join('education', 'employees.id', '=', 'education.employee_id') 
    ->join('addresses', 'employees.id', '=', 'addresses.employee_id') 
    ->select('employees.first_name','employees.id','employees.gender','education.id','education.school','education.subject','addresses.village') 
    ->where('employees.id',$id) 
    ->get(); 

    return view ('profile',compact('data')); 
+0

danke Haseena, aber es hat nicht funktioniert –

+0

Ist das $ ID Array? Können Sie versuchen, die $ id auszudrucken? –

3

Laravel eine spezielle Funktion für Joins, die so genannte Modelle .

Das in Laravel enthaltene Eloquent ORM bietet eine schöne, einfache ActiveRecord-Implementierung für die Arbeit mit Ihrer Datenbank. Jede Datenbanktabelle hat ein entsprechendes "Modell", das zur Interaktion mit dieser Tabelle verwendet wird. Mit Modellen können Sie Daten in Ihren Tabellen abfragen und neue Datensätze in die Tabelle einfügen.

Ein Modell kann eine oder mehrere haben. Dies wird eine Zeile aus den Benutzertabellendaten zurückgeben.

Fügen Sie dies Ihrem Modell hinzu, das Daten aus Ihrer Mitarbeitertabelle abruft.

public function user() { 
    return $this->hasOne('app\User', 'id', 'user_id'); 
} 

Jetzt können Sie ausführen, um die Benutzer-ID auszugeben. (Sie benötigen ein Modell namens "Mitarbeiter", das mit Ihrem Tisch "Mitarbeiter" verbunden ist)

$employees = Employees::get(); 
dump($employees->user->id); 

Ich hoffe, das funktioniert!

Mehr unter: https://laravel.com/docs/5.2/eloquent