在视图中我添加了
<select name="list">
<option value="mouse">mouse</option>
<option value="keyboard">keyboard</option>
<option value="headphones">headphones/option>
</select>`在模型中我创建了$list = "'mouse','keyboard','headphones'";
如果用户选择“鼠标”而不是$list包含“鼠标”的where items_sort in ({$list}),如何添加条件?
$result = Yii::$app->getDb()->createCommand(
"Select *
from order_table
where items_sort in ({$list})"
)->queryAll();
return $result;
}发布于 2017-02-16 00:57:12
作为一般答案,我假设您有一个表单,其中包含一个名为list的select字段,它向order操作提交请求。使用默认值将列表参数添加到您的操作:
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]);
}这只是一个解决方案,甚至不是一个好的解决方案!一个很好的候选者是为您的order_table表实现一个Order模型(如果您将此表名和名称items_sort列中的_table前缀删除为一个单数名称,例如item_sort),并使用ActiveRecord模型搜索您的操作:
public function actionOrder($list = "'mouse','keyboard','headphones'")
{
$result = Order::find()
->where(['items_sort' => $list])
->all();
return $this->render('order', ['order' => $result]);
}https://stackoverflow.com/questions/42191226
复制相似问题