yii2从数据库表返回记录

时间:2016-12-22 17:39:48

标签: php yii2 yii2-advanced-app

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

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();

}

上面的代码总是在我出错的地方返回空白

1 个答案:

答案 0 :(得分:0)

您可以使用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();