whereFunc()
The whereFunc() and orWhereFunc() methods allow you to use raw SQL expressions or database functions in your WHERE clause – while maintaining full parameter binding on the comparison side.
Signature:
public function whereFunc(string $expression, mixed $value, string $operator = '='): selfpublic function orWhereFunc(string $expression, mixed $value, string $operator = '='): self
Usage Example
Compare the current year using YEAR():
$db->whereFunc('YEAR(created_at)', 2024);
$users = $db->get('users');
Using a different operator:
$db->whereFunc('LENGTH(username)', 10, '>=');
$users = $db->get('users');
Security Notice
The expression (first argument) is used raw and must be a trusted, valid SQL fragment.
The $value is still securely bound via prepared statements.
If the expression contains disallowed aggregate functions like SUM() or AVG(), it will be rejected.
Only scalar values are allowed as $value. The expression is not validated or escaped automatically – use with care.
OR Variant
orWhereFunc() behaves exactly like whereFunc(), but adds an OR condition instead of AND.