删除 laravel 中带有破折号的条目
Delete entries that have a dash in them in laravel
我正在编写一个 "run once, throw away" laravel 任务,假设在 table 上执行 select 并删除名称中包含破折号的任何条目。
A-R00001
B-R00001
C-R00001
UUA-F4
以上为部分条目示例
我知道我可以这样做:Model::where('name', 'like %-%')->delete();
我想知道这是否是正确的方法。它 运行 在 postgres 数据库上,不是那个,那应该很重要。
我看到的其他答案使用疯狂的正则表达式,我认为在这种情况下我不需要它...
想法?
是的,如果您想删除行,这可能是正确的方法,但您应该使用:
Model::where('name', 'LIKE', '%-%')->delete();
而不是:
Model::where('name', 'like %-%')->delete();
当然,问题是,如果您需要 运行 为您删除的每一行执行任何额外任务。如果是这样,您应该首先获取要删除的行和 运行 它们的额外任务
编辑
如果您想使用 Laravel 事件来完成额外的任务,您不能简单地删除所有行。
你需要运行:
$models = Model::where('name', 'LIKE', '%-%')->get();
foreach ($models as $model) {
$model->delete();
}
到 运行 删除每一行的事件,以便它们可以是 运行。
能不能不做简单的SQL?非常常见的数据库管理任务...
DELETE FROM table WHERE field LIKE '%-%' ;
不需要循环或 PHP
我正在编写一个 "run once, throw away" laravel 任务,假设在 table 上执行 select 并删除名称中包含破折号的任何条目。
A-R00001
B-R00001
C-R00001
UUA-F4
以上为部分条目示例
我知道我可以这样做:Model::where('name', 'like %-%')->delete();
我想知道这是否是正确的方法。它 运行 在 postgres 数据库上,不是那个,那应该很重要。
我看到的其他答案使用疯狂的正则表达式,我认为在这种情况下我不需要它...
想法?
是的,如果您想删除行,这可能是正确的方法,但您应该使用:
Model::where('name', 'LIKE', '%-%')->delete();
而不是:
Model::where('name', 'like %-%')->delete();
当然,问题是,如果您需要 运行 为您删除的每一行执行任何额外任务。如果是这样,您应该首先获取要删除的行和 运行 它们的额外任务
编辑
如果您想使用 Laravel 事件来完成额外的任务,您不能简单地删除所有行。
你需要运行:
$models = Model::where('name', 'LIKE', '%-%')->get();
foreach ($models as $model) {
$model->delete();
}
到 运行 删除每一行的事件,以便它们可以是 运行。
能不能不做简单的SQL?非常常见的数据库管理任务...
DELETE FROM table WHERE field LIKE '%-%' ;
不需要循环或 PHP