Ich möchte die Größe meiner Abfrage in Laravel reduzieren.Reduzieren von Datenbankabfragegrößen in Laravel
Meine Abfrage sieht wie folgt aus etwas (ich es verkürzt, es geht um das 10-fache dieser Menge von Linien):
$users = User::where("interface_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("interface_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orWhere("web_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("web_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orWhere("illustration_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("illustration_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orWhere("brush_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("brush_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orWhere("typography_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("typography_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orWhere("identity_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("identity_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orWhere("vector_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', $unavailableCheck)
->orWhere("vector_art", '=', 1)->where('role', '=', 2)->where('commstatus', '=', 1)
->orderBy($orderByString, 'desc')
->paginate(1);
Wie Sie sehen können, ist es ein wenig überflüssig ist.
Für jeden Kunsttyp, ich suche Benutzer nach der Rolle von "2", wenn ihre Kommastatus gleich "1" oder "nicht verfügbar" ist.
Zuerst versuchte ich es zu kürzen, indem ich am Ende jeder "where" -Klausel keine "role" oder "commstatus" hinzufügte, und am unteren Rand einen weiteren $ users = $ users :: wo ("role") , "=", "2"), aber ich kann nicht in der Lage sein, die richtige Syntax zu finden.
Gibt es eine Möglichkeit, diese Abfrage zu verkürzen?
Es sieht aus wie Sie haben hat ein Schema erhalten, das die [Null, eine oder Unendlichkeitsregel] verletzt (http://en.wikipedia.org/wiki/Zero_one_infinity_rule) und neu strukturiert werden muss, um ein gewisses Maß an [Datennormalisierung] zu haben (http: // en. wikipedia.org/wiki/Datenbank_normierung). Mit dem richtigen Schema könnte diese Abfrage ziemlich einfach sein. – tadman
Nun, es funktioniert ganz gut, ich möchte es nur kürzen, ich kann einfach nicht finden, Syntax, die funktioniert. Ich habe versucht, etwas in der [Dokumentation] (https://laravel.com/docs/5.2/queries) zu finden, das mir helfen könnte, aber ich kann nichts finden. –
Ich hoffe, '$ availableCheck' repräsentiert nicht' NULL'. Wenn ja, hast du andere Probleme. –