Ich habe dies versucht:
return DB::select(DB::raw('select users.* from clients, users where clients.id_marchand = 8 and users.id = clients.id_client union select users.* from employes, users where employes.id_marchand = 8 and users.id = employes.id_employe order by `seen` asc, `created_at` desc limit 25 offset 0'), [1]);
Aber in UserController.php, ich habe das:
public function indexSort($role)
{
$counts = $this->user_gestion->counts();
$users = $this->user_gestion->index(25, $role);
$links = $users->render();
$roles = $this->role_gestion->all();
return view('back.users.index', compact('users', 'links', 'counts', 'roles'));
}
Und Laravel sagen mir, dass ich 'Render' Methode nicht auf ein Array anwenden kann ...
Also ich denke, ich brauche stattdessen eine Eloquent Sammlung zu bekommen ...
ich dies einige Dinge wie auch versucht habe:
$liste_clients = $this->model
->with('clients')
->where('clients.id_marchand', '=', auth()->user()->id)
->where('users.id', '=', 'clients.id_client');
$liste_employes = $this->model
->with('employes')
->where('employes.id_marchand', '=', auth()->user()->id)
->where('users.id', '=', 'employes.id_employe')
->union($liste_clients);
return $liste_employes
->oldest('seen')
->latest()
->paginate($n);
aber mein größtes Problem ist, dass ich nicht in der Lage bin von zu wählen mehrere Tabellen mit Abfragegenerator
Auch bei beitreten:
$liste_clients = $this->model
->join('clients', function ($join) {
$join->on('users.id', '=', 'clients.id_client')
->where('clients.id_marchand', '=', auth()->user()->id);
});
$liste_employes = $this->model
->join('employes', function ($join) {
$join->on('users.id', '=', 'employes.id_employe')
->where('employes.id_marchand', '=', auth()->user()->id);
})
->union($liste_clients);
return $liste_employes
->oldest('seen')
->latest()
->paginate($n);
Ich erhalte eine Fehlermeldung:
SQLSTATE [21000]: Cardinality Verletzung: 1222 Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten (SQL: (SELECT COUNT (*) als Aggregat aus users
Exklusionsverknüpfung employes
auf users
. id
= employes
. id_employe
und employes
. id_marchand
= 8) union (select * from users
innere Verbindung clients
auf users
. id
= clients
. id_client
und clients
.id_marchand
= 8), um nach seen
asc, created_at
ab)
Auf einem anderen Forum, ein Mann und sagte mir einfach diese im Repository zu tun:
return $this->model
->with('role', 'clients', 'employes')
->oldest('seen')
->latest()
->paginate($n);
und dann mit etwas foreach zu spielen die Aussicht, wie:
@foreach($users->clients as $client)
Aber ich kein Ergebnis bekommen konnte, und ich weiß nicht, warum ...
ich habe Trie d einige Dinge, wie folgt aus: '$ liste_clients = $ this-> Modell -> mit ('Kunden') -> where ('clients.id_marchand', '=', Auth() -> Benutzer() - > id) -> where ('users.id', '=', 'clients.id_client'); $ liste_employes = $ this-> Modell -> mit ('employes') -> where ('employes.id_marchand', '=', Auth() -> Benutzer() -> id) -> wo ('users.id', '=', 'employees.id_employe') -> union ($ liste_clients); return $ liste_employes -> älteste ('gesehen') -> neueste() -> Paginieren ($ n); ' aber mein größtes Problem ist, dass ich aus mehreren Tabellen mit Query Builder zur Auswahl nicht in der Lage bin . –