Ankündigung

Einklappen
Keine Ankündigung bisher.

Query Scopes miteinander verbinden.

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Laravel] Query Scopes miteinander verbinden.

    Hallo,

    Ich habe eine Abfrage die ich nach belieben mit einem Query Scope filtern kann.
    Soweit klappt auch alles schon nur, würde ich jetzt gerne satt EINEM Filter mehrere
    Filter hintereinander reihen können.

    PHP-Code:
         public function filter(Filter $request)
    {
        
    $view view('filter');

        
    $filter $request->get('filter');

        
    $list = [
                
    'male'     => Profile::male(),
                
    'female'   => Profile::female(),
                
    'popular'  => Profile::popular(),
                
    'relation' => Profile::relationship(),
                
    'flirt'    => Profile::flirt(),
        ];

        return 
    $view->with([
            
    'List' => $list[$filter]->paginate(15)
        ]);


    Ungefähr wie in den Docs.
    http://laravel.com/docs/5.0/eloquent#query-scopes

    PHP-Code:
      $users User::popular()->women()->orderBy('created_at')->get(); 
    Natürlich möchte ich jetzt nicht bei 5 Filtern 120 Kombinationsmöglichkeiten einzelnen aufschreiben.
    Irgendwie muss es doch möglich sein, die Methodennamen zu speichern um sich daraus einen dynamischen Methodenaufruf zu bauen ?

    Oder liege ich das falsch und das ist eine ganz dumme Idee ?

    Wie würde man das sonst lösen ?


  • #2
    Du kannst in PHP den Funktionsnamen auch in einer Variablen/einem Array ablegen und dann zum Beispiel so aufrufen:
    PHP-Code:
    $obj->{$methodName}(); 
    Alternativ kannst du dir auch dynamische Scopes anschauen, die ebenfalls bei deinem Link beschrieben werden. Damit könntest du das entsprechende Attribut einfach als String an den Scope übergeben.

    Kommentar


    • #3
      Danke

      Kommentar

      Lädt...
      X