2017-02-12 4 views
1

Im Hinblick michBedingung hinzufügen aus Sicht in Modell auf SQL

hinzufügen
<select name="list"> 
    <option value="mouse">mouse</option> 
    <option value="keyboard">keyboard</option> 
    <option value="headphones">headphones/option> 
</select>` 

Im Modell erstellen I $list = "'mouse','keyboard','headphones'";

Wie Bedingung hinzufügen, wenn Benutzer auswählen 'Maus' als where items_sort in ({$list}) wo $list 'Maus' enthält?

$result = Yii::$app->getDb()->createCommand(
     "Select * 
     from order_table 
     where items_sort in ({$list})" 
    )->queryAll(); 


    return $result; 
} 
+0

erhalten Post Daten vom Benutzer in der Steuerung und übergeben Sie es in Ihr Modell – bxN5

+0

@Roman könnten Sie ein Beispiel zeigen? – stand

Antwort

0

nur als eine allgemeine Antwort, ich nehme an, Sie haben ein Formular mit einem select Feld list benannt, die Anforderung an order Aktion vorzulegen. Fügen Sie der Aktion ein Listenargument mit dem Standardwert

hinzu
public function actionOrder($list = "'mouse','keyboard','headphones'") 
{ 
    $result = Yii::$app->getDb()->createCommand(
      "Select * 
      from order_table 
      where items_sort in ({$list})" 
     )->queryAll(); 

    return $this->render('order', ['order' => $result]); 
} 

Es ist nur eine Lösung, nicht einmal eine gute Lösung! Ein guter Kandidat ist die Implementierung eines Order Modell für Ihre order_table Tisch (und es ist gut, wenn man _table Präfix aus dieser Tabelle Namen items_sort Spalte zu einem singulären Namen zB item_sort entfernen und benennen) und suchen Sie in Ihrer Aktion mit einem ActiveRecord Modell:

public function actionOrder($list = "'mouse','keyboard','headphones'") 
{ 
    $result = Order::find() 
     ->where(['items_sort' => $list]) 
     ->all(); 

    return $this->render('order', ['order' => $result]); 
} 
Verwandte Themen