如何在Yii 2中删除多行

时间:2016-08-21 09:20:25

标签: php yii2

我已经按照下面的链接尝试在Yii中删除多行,但到目前为止,我正在使用的功能说Yii找不到它,请参阅下面的截图。 enter image description here

这是我在StackOverflow中遵循的指南。 Delete multiple rows in YII2

这是我正在处理的代码。

$keyfordeletion = ActiveSubject::find($clientid);
$keyfordeletion->CreateCommand()->deleteAll('subjectcontainer', 'clientid= ' . $clientid)->execute();

这里发生的事情是keyfordeletion会在clientid有效记录中找到activesubject的所有值,并会通过该功能将其删除,但它会说找不到该方法。那么有没有办法在这种情况下删除多行或解决找不到的方法函数?

3 个答案:

答案 0 :(得分:9)

在ActiveRecord中有静态方法deleteAll()

ActiveSubject::deleteAll(['clientid' => $clientid]);

这将删除ActiveSubject::tableName()clientid为$ clientid的所有行。 $ clientid可以是单值或值数组。

答案 1 :(得分:0)

您可以使用foreach逐个删除。

 $deleteall = ActiveSubject::where(['clientid'=>$clientid])->all();
    foreach($deleteall as $delete)
    {
        $delete->delete();
    }

答案 2 :(得分:0)

还有一种sql方法可以删除链接的行,使用外键和“on delete cascade”指令:

-

所以如果删除“建筑物”表格中的一行,“房间”表格中的所有相关记录也会被删除 - 无需额外的代码。 对于mysql,这只适用于InnoDB引擎。