2017-01-17 2 views
0

Ich habe Tabelle db Kategorien mit SpaltenOctoberCMS db Abfrage und json

id name types active 
  • ID - INT, Autoinkrement
  • NAME - VARCHAR
  • TYPEN - JSONABLE
  • ACTIVE - INT

DB Rekordprüfung ple

1 | Test Category | ["1","2"] | 1 
2 | Another One | ["1","2","3"] | 1 

Jetzt möchte ich eine Abfrage erstellen Kategorie abrufen aktiv ist = 1 und Typ in Array (von Typen Spalte).

Zum Beispiel mein Typ ist und Abfrage sollte aussehen, wenn existieren in [ "1", "2", "3"]

$categories = Db::table('categories') 
    ->where('types', '3') <- ?? 
    ->where('active', 1) 
    ->get(); 

Wie kann ich es tun?

+0

Sie suchen nach ['FIND_IN_SET()'] (http://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_find-in-set). Ich kenne OctoberCMS nicht, aber ich vermute, dass es ähnlich zu http://stackoverflow.com/questions/35594450/find-in-set-in-laravel-example sein wird – Sean

Antwort

0

Und noch einmal beantworte ich meine eigenen Fragen. Nach ein paar Versuchen, es in der Komponente zu lösen, habe ich es einfach gemacht, teilweise mit Twig-Funktion zu arbeiten.

Die Antwort ist also:

Abfrage

$categories = Category::where('active', 1)->get(); 

Funktion in Teil

{% for category in categories %} 
    {% if type in category.types %} 
     {{ category.name }} 
    {% endif %} 
{% endfor %} 

Jetzt perfekt es nur Kategorien zeigt, wo Typ (in diesem Fall ) befindet sich in einer Spalte (gemäß meiner Erklärung) Nation in Frage).