DeleteAll with join?

291
05 декабря 2017, 22:10

В Yii2 ActiveRecord у модели есть статичный метод deleteAll. Как сделать удаление с джоином? Например я хочу вот так сделать:

delete article from article as a
left join user as u on a.user_id = u.id
where u.id is null

Есть модель Article, есть модель User.

// что-то вроде...
Article::deleteAll('inner join user as u on user_id = u.id where u.id is null');

Единственное что приходит в голову:

Yii::$app->db->createCommand('delete :delete_table from :delete_table as d left join :user as u on d.user_id = u.id where u.id is null', [
    ':delete_table' => Article::tableName(),
    ':user' => User::tableName()
])->execute();
Answer 1

Наверно будет проще сделать выборку, собрать айдишники в массив и удалить. Пусть и в два запроса, но при этом код изящный, понятен каждому (и себе любимому) и не надо расписывать портянки sql. Вряд ли это тот случай, когда необходим один запрос.

READ ALSO
guzzlehtp и мультипоточность

guzzlehtp и мультипоточность

Всем привет!) Возник вопрос, в котором что то не могу нормально разобратьсяЕсть массив ссылок:

349
php exec синхронно

php exec синхронно

Подскажите в чем проблема: Выполняю функцию через exec:

444
Проверка на отправку писем

Проверка на отправку писем

Добрый вечер, есть скрипт, который отправляет письмо по окончанию регистрацииКак проверить, смог ли отправить скрипт письмо? В данном скрипте,...

404
Вопрос по PHP, внесение из базы в массив

Вопрос по PHP, внесение из базы в массив

Вопрос заключается в следующем: Имеем скрипт (ниже)

453