【问题标题】:Yii findAll that match at least one of several criteriaYii findAll 至少匹配几个条件之一
【发布时间】:2012-02-13 00:31:31
【问题描述】:

我正在 Yii 中对 findAll 记录执行 simpleQuery 操作,这些记录至少匹配几个 CDbCriteria 中的一个,或者如果需要,只匹配一些搜索条件。例如,我希望用户能够通过输入一个字符串来查询我的记录。该字符串应针对四列中的每一列进行检查,并且结果集应包括至少有一列与该字符串匹配的所有记录(没有重复)。我还是 Yii 的新手,非常感谢任何帮助。

【问题讨论】:

    标签: php activerecord yii


    【解决方案1】:

    假设您在模型的 $search_input 字段中有搜索输入,并且您想要搜索所有三个字段 - name、title 和 desc,对于该字符串,您可以这样做 -

    $criteria = new CDbCriteria();
    $criteria->compare('name', $this->search_input, TRUE, 'OR');
    $criteria->compare('title', $this->search_input, TRUE, 'OR');
    $criteria->compare('desc', $this->serach_input, TRUE, 'OR');
    $result = MyModel::model()->findAll($criteria);
    

    【讨论】:

    • 当你生成一个新模型和 CRUD 接口时,检查 actionAdmin() 和 model->search()。您搜索的内容在那里实现。
    • 谢谢...我什至不知道内置的 $searchInput 属性。
    • @tacos - $this->search_input 不是内置属性。这只是指您为捕获用户的搜索输入而创建的变量。
    猜你喜欢
    • 2019-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 2021-12-08
    • 1970-01-01
    • 2013-09-27
    相关资源
    最近更新 更多