我有一个从数据库中提取的对象数组:
$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是我的数据库结构。
答案 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]);