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

Is there a way to check if a database table already contains a record with a certain value in Yii2

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

编辑

对于我的问题描述不清楚,我们深表歉意。 我想要完成的事情看起来像这样:

因此,当制作新餐时,状态要么必须关闭,要么必须将打开的条目的状态编辑为关闭,以便可以创建具有打开状态的新餐

你应该尝试这样的事情:

 // 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.');
 }],

既然你只想要一个'open'状态记录,你为什么要把逻辑简单化。 在插入新记录之前,将所有其他记录状态更新为 'closed',然后保存新记录。

你最好禁止'update'动作,然后如果你想要一个'open'状态记录,就创建一个。

你甚至可以忘记'status',只用最新的记录作为'open'状态记录。