Ich muss die aktiven Clients von einer Route mit Eloquent filtern.Laravel Eloquent, Filterung von Pivot-Tabelle Spalte
Ich arbeite mit einer Drittanbieter-Datenbank, die ich nicht ändern kann. In meinem Projekt habe ich zwei Modelle: Cliente (Client) und Ruta (Route), die eine viele zu viele Beziehung haben, so fügte ich die goesToMany Beziehung in meine Modelle.
Die einzige Spalte, die ich von der Pivot-Tabelle interessiert, heißt DESACTIV, die mir sagt, wenn ein Client für eine Route deaktiviert ist.
Ruta Modell:
class Ruta extends Model
{
protected $connection = 'mysql2';
protected $table = 'truta';
protected $primaryKey = 'CODIRUTA';
public function clientes(){
return $this->belongsToMany(Cliente::class, 'tcpcarut', 'CODIRUTA', 'CODICLIE')->withPivot('DESACTIV');
}
}
Cliente Modell:
class Cliente extends Model
{
protected $connection = 'mysql2';
protected $table = 'tcpca';
protected $primaryKey = 'CODICLIE';
public function rutas(){
return $this->belongsToMany(Ruta::class, 'tcpcarut', 'CODICLIE', 'CODIRUTA')->withPivot('DESACTIV');
}
}
Was ich brauche, ist es, die aktiv (oder nicht deaktiviert) Clients eine bestimmte Strecke gegeben zu bekommen.
ich getan habe es auf meinem Controller wie folgt aus:
$miRuta = Ruta::where('CODIRUTA','=',$ruta)->first();
$clientes = array();
foreach ($miRuta->clientes as $cliente){
if ($cliente->DESACTIV == 0){
array_push($clientes, $cliente->NOMBCLIE);
echo end($clientes)."<br/>";
}
}
Und es funktioniert gut, aber ich glaube nicht, es elegant ist. Ich weiß, dass dies durch Eloquent erreicht werden kann, ich weiß es nur nicht zu wissen und weiß nicht, wie ich es tun soll.
Vielleicht die Filter auf dem clientes Methode auf meinem Ruta Modell hinzufügen Ich konnte, so dass es nur die aktiven Clients zurückkehren würde.
Oder vielleicht könnte es am besten, eine Methode auf dem Cliente Modell zu schreiben, isDeactivated
Ich weiß, es klingt wie ich weiß, wovon ich rede, aber ich brauche jemanden, Um meine Hand darauf zu halten, bin ich einfach zu Noob mit Eloquent: /. Beispiele würden sehr geschätzt werden.
Ich habe noch nie von wherePivot gehört, das passiert, wenn Sie ein Projekt starten, ohne sich die Zeit zu nehmen, um zu wissen, mit was Sie arbeiten. Wie Sie gesehen haben, implementierte ich die schnellste Lösung meines Wissens, um mit dem Projekt weiter voranzukommen. Danke, mein Code ist auf diese Weise viel sauberer: D. – Adocad