2017-01-23 3 views
0

Ich habe viele, viele Beziehungen zwischen User und ProjectLaravel 5.3: Viele zu viele realtionship Daten

Realtionship Namen sind: User Modell haben projects und Project Modell users haben. Und sind richtig gebildet.

ich den folgenden Code für den Datentabellen bin mit:

public function handleProjects(Request $request) 
    { 
     $responseData = \App\Misc::handleDatatable([ 
      "request" => $request, 
      "model" => "\App\Project", 
      "actions" => [ 
      "delete" => function($records) { 
       foreach($records as $record) { 
        $record->delete(); 
       } 
       return [ 
       "status" => "OK", 
       "message" => "Successfully deleted the selected product types!", 
       ]; 
      }, 
      ], 
      "columns" => [ 
      "title" => "title", 
      "users.username" => "users.username", 
      "level" => "level", 
      "users.username" => "users.username", 
      "created_at" => function($value) { 
       return $value->diffForHumans(); 
      } 
      ], 
      ]); 
     return response()->json($responseData); 
    } 

Notiere die "users.username" => "users.username", letzten 8. Zeile, wie kann ich den Benutzernamen aus der users Tisch zu bekommen?

Die Beziehungsnamen sind oben erwähnt.

Und es gibt mir die folgende Fehlermeldung:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'users.username' in 'field list' (SQL: SELECT projects.*, categories.name AS b74HW, subcategory.name AS rLTng, users.username AS fUfHg from `projects` left join `categories` as `categories` on `categories`.`id` = `projects`.`categories_id` left join `sub_category` as `subcategory` on `subcategory`.`id` = `projects`.`subcategory_id` group by `id` order by `projects`.`id` desc limit 15 offset 0) 
+1

Woher kommt diese 'handleDatatable' Funktion her? – Jerodev

+0

@jerodev Es ist in der Steuerung, Es ist ein bisschen komplex zu erklären, im Grunde füllt es die Datentabellen, Es funktioniert mit 'OneToMany' Beziehungen, und arbeitet auch mit' OneToOne' Beziehungen. Alles, was ich zu tun habe, ist, die Daten aus der Benutzertabelle zu holen, die als "ManyToMany" gemocht werden. –

+0

Sie verbinden die Tabelle "Benutzer" nicht mit Ihrer Abfrage. So sind Benutzer und auch users.username unbekannt. Dann können wir Ihre Frage nicht beantworten, ohne die Details der Funktion * handleDatatable * zu kennen. –

Antwort

0

Der Fehler ist recht direkt. Sie verwenden keine Join-Abfrage, daher wird davon ausgegangen, dass Sie eine Spalte mit dem Namen users.username haben und Sie einen Spaltenbenutzernamen in der users-Tabelle haben.

Wie rufen Sie die Beziehung? Etwas wie:

$data = Users::find(1)->with('projects')->get(); //this user with id 1, and eager load the relation.

Auch nicht vergessen Schleife Trog die Ergebnisse wie:

foreach($data->projects as $project) { ... }