2016-01-30 1 views
0

Я пишу задачу «запускать один раз, выбрасывать» laravel, которая, как предполагается, делает выбор в таблице и удаляет любую запись, содержащую тире в названии.Удалить записи, которые имеют тире в них в laravel

A-R00001 
B-R00001 
C-R00001 
UUA-F4 

Вышеприведенный пример некоторых записей.

Я знаю, что могу сделать что-то вроде: Model :: where ('name', 'like% -%') -> delete();

Мне интересно, если это правильный подход. Его работа на базе postgres, не то, что должно иметь значение.

другие ответы, которые я видел использовать сумасшедшие регулярное выражение, и я не думаю, что мне нужно, что в этом случае ...

идеи?

ответ

1

Да, это, вероятно, правильный подход, если вы хотите удалить строки, но вы должны использовать:

Model::where('name', 'LIKE', '%-%')->delete(); 

вместо:

Model::where('name', 'like %-%')->delete(); 

Конечно, вопрос, если вам нужно для выполнения любой дополнительной задачи для каждой удаляемой строки. Если да, то вы должны сначала получить строки, которые вы хотите удалить и выполнить дополнительные задачи для них

EDIT

Если вы хотите использовать событие Laravel делать дополнительные задачи, вы не можете просто удалить все строки.

Вам нужно запустить:

$models = Model::where('name', 'LIKE', '%-%')->get(); 

foreach ($models as $model) { 
    $model->delete(); 
} 

для запуска удалить событие для каждой строки, чтобы они могли быть запущены.

+0

Выполнение этих дополнительных задач, должны быть обработаны красноречивых событий Laravel в. – ceejayoz

+0

Не могли бы вы объяснить разницу между «Model :: where» («name», «LIKE», «% -%») -> delete(); 'и' Model :: where ('name', 'like% - % ') -> delete(); '? – Pankaj

-2

Можете ли вы не просто сделать простой SQL? Довольно распространенной БД администратора задача ...

DELETE FROM table WHERE field LIKE '%-%' ; 

Нет перекручивание или PHP требуется

+0

Это может быть полезно для этого на уровне PHP. Модели Laravel могут иметь мягкое удаление, поэтому 'delete()' может фактически не удалять строку, а вместо этого указывать ее как удалённую. Модели могут также иметь события удаления для обработки других задач очистки/уведомления. – ceejayoz

+0

Уверен, что есть, но как говорится в сообщении, это задача выброса, которая звучит как задача обслуживания данных. Если не установлены мягкие удаления, для одной задачи лучше использовать метод sql –