Eloquent: shorter WHERE clauses with whereField

There’s one really neat Laravel Eloquent function which, from my experience, a lot of developers don’t know. How do we write WHERE clauses on Eloquent queries?

First option: with three arguments – field, operator, value.

$products = Product::where('category', '=', 3)->get();

Shorter option: we can skip the second parameter, equal sign.

$products = Product::where('category', 3)->get();

But now – even shorter option: did you know you can do THAT?

$products = Product::whereCategory(3)->get();

Yes, exactly, just add your field in CamelCase after the where symbols. Under the hood Laravel engine will transform it into a proper where clause with equal sign.

And if you have a field with more than one “word” and underscore separator, like category_id – transform it into CamelCase:

$products = Product::whereCategoryId(3)->get();

That’s it, simple “trick” but the code is even more readable now, isn’t it?

Like our articles?
Check out our Laravel online courses!

7 COMMENTS

  1. > That’s it, simple “trick” but the code is even more readable now, isn’t it?

    I can’t agree with you. In your opinion – code may be more readable, but the same code isn’t testable. Each call of magic method sounds like problem for unit tests.

LEAVE A REPLY

Please enter your comment!
Please enter your name here