首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将条件从视图添加到模型中的sql

将条件从视图添加到模型中的sql
EN

Stack Overflow用户
提问于 2017-02-13 02:05:35
回答 1查看 62关注 0票数 1

在视图中我添加了

代码语言:javascript
复制
<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}),如何添加条件?

代码语言:javascript
复制
$result =  Yii::$app->getDb()->createCommand(
        "Select *
         from order_table
         where items_sort in ({$list})"
    )->queryAll();


    return $result;
}
EN

回答 1

Stack Overflow用户

发布于 2017-02-16 00:57:12

作为一般答案,我假设您有一个表单,其中包含一个名为listselect字段,它向order操作提交请求。使用默认值将列表参数添加到您的操作:

代码语言:javascript
复制
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模型搜索您的操作:

代码语言:javascript
复制
public function actionOrder($list = "'mouse','keyboard','headphones'")
{
    $result = Order::find()
        ->where(['items_sort' => $list])
        ->all();

    return $this->render('order', ['order' => $result]);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42191226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档