删除YII2中的多行

时间:2015-11-24 16:33:46

标签: yii2

我有一个从数据库中提取的对象数组:

$masterListContacts = MasterListContacts::find()
                ->select('master_list_contacts.*')
                ->innerJoin('master_contacts', '`master_contacts`.`id` = `master_list_contacts`.`master_contact_id`')
                ->with('masterContact')
                ->where(['user_id' => \Yii::$app->user->identity->id, 'slug' => $slug])
                ->all();

在某些情况下,我需要删除此数组中表示的数据库中的所有行。但是使用 delete() deleteAll()方法时,我收到错误Call to a member function ... on array。有人能告诉我哪一个最好的方法来实现这个目标?

更新: Here是我的数据库结构。

2 个答案:

答案 0 :(得分:10)

找到更好的解决方案:

\Yii::$app
    ->db
    ->createCommand()
    ->delete('master_contacts', ['id' => $deletableMasterContacts])
    ->execute();

其中$deletableMasterContacts是master_contacts id的数组,应删除

答案 1 :(得分:6)

您可以轻松删除->select('master_list_contacts.*')

->innerJoin('master_contacts', '`master_contacts`.`id` = `master_list_contacts`.`master_contact_id`')

执行与->joinWith('masterContact')相同的工作。

对于删除entites,请尝试使用以下代码:

MasterListContacts::deleteAll(['user_id' => \Yii::$app->user->identity->id, 'slug' => $slug]);