【问题标题】:yii2 returning records from a database tableyii2 从数据库表返回记录
【发布时间】:2016-12-23 16:29:26
【问题描述】:

我有下表,其中有一列以逗号分隔保存的值 那是

1,2,3,4,5

所以最后我实现了这样的目标

first row      1,2,3,4
second row     2,3,5
third row      1,4,5

行有一个属性类别

所以我想返回所有具有特定值的行,例如 1

这是我尝试过的

public function actionChecklist($categoryval)  //category is the integer value eg 1
{

    $checklistitems= TblChecklist::find()->where(
        [
            "category"=>in_array("category",[$categoryval])
        ]
    )->all();


    var_dump($checklistitems);
    die();

}

上面的代码总是返回空我哪里出错了

【问题讨论】:

    标签: php yii2 yii2-advanced-app


    【解决方案1】:

    您可以使用LIKE,前提是每个类别都由两个分隔符包围在您的大小写逗号中,即,1,2,3,4,5,而不是1,2,3,4,5。如果没有这些逗号,搜索 1 将返回包含 1 的所有内容,包括 10,2,3 之类的内容。

    您的搜索参数也需要用这些逗号括起来:

    $checklistitems= TblChecklist::find()
        ->where(["like", "category", ",".$categoryval.","])
        ->all();
    

    但是,您可能应该通过在清单和类别之间创建一个联结表来非规范化您的表。然后,您应该在清单模型和类别模型之间创建关系。上面的代码将如下所示:

    $checklistitems= TblChecklist::find()
        ->joinWith("categories")
        ->where(["categories.id" => $categoryval])
        ->all();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2021-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-07
      • 1970-01-01
      相关资源
      最近更新 更多