Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel Delete Query Builder

In Laravel 4 Illuminate\Database\Query in a Builder class delete function accepts null as an id parameter. And behaivor of this function implies that if I have something like:

DB::table('users')->where('id', $id)->delete(); 

And if $id will be passed as a null, it will truncate the whole table. Which means that besides standard validation, I have to wrap every delete statement with ! is_null($id) validation. Is it a security breach or it's considered as a standard practice?

like image 230
castt Avatar asked Mar 28 '14 20:03

castt


1 Answers

I think you're misunderstanding what that parameters purpose is. It's simply a shortcut for the example you have shown. If you have a users ID you can delete them without writing that where clause.

DB::table('users')->delete($id); 

The above is identical to this:

DB::table('users')->where('id', $id)->delete(); 

You'd obviously perform a check prior to using any of these methods to ensure that a valid ID has been supplied. I wouldn't say it's a security breach, just something you as a developer needs to be aware of when developing your application. You don't just go willy nilly deleting things without first validating the input.

like image 95
Jason Lewis Avatar answered Sep 27 '22 17:09

Jason Lewis