有没有办法检查数据库表是否已包含Yii2中具有特定值的记录

时间:2016-04-13 14:57:24

标签: mysql sql yii2 yii2-basic-app

我有一个基本的Yii2应用程序,用户可以在其中创建具有状态(枚举打开或关闭)的膳食。 这个想法是只有1条状态为打开的记录。 是否有一种简单的方法在Yii2中检查在添加新记录之前是否已经有一个打开状态的记录?

修改

对我的问题描述不清楚表示歉意。 我想要完成的事情看起来像这样: enter image description here

因此,当新餐进行时,必须关闭状态,或者必须编辑已打开的条目的状态以便关闭以便可以创建具有开放状态的新餐

2 个答案:

答案 0 :(得分:2)

你应该尝试这样的事情:

 // add this custom validator to your model's rules
 ['status', function ($attribute, $params) {
    if ($this->getIsNewRecord() && $this->$attribute === 'open' && Meal::find([$attribute => 'open'])->count()>0)
        $this->addError($attribute, 'Error message.');
 }],

答案 1 :(得分:1)

因为你只想打开一个'状态记录,为什么你只是让你的逻辑简单。 在插入新记录之前,请将所有其他记录状态更新为“已关闭”,然后保存新记录。

你最好禁止更新'行动,然后如果你想要打开'状态记录,只需创建一个。

你甚至可以忘记'状态',只需使用最新的记录作为'打开'状态记录。