laravel/framework
Conditional (when helper) gives back Eloquent Builder instance inside the closure instead of the relationship instance
Aperta
#53.292 aperta il 24 ott 2024
help wanted
Metriche repository
- Star
- (34.869 stelle)
- Metriche merge PR
- (Merge medio 1g 22h) (129 PR mergiate in 30 g)
Descrizione
Laravel Version
11.28.1
PHP Version
8.3
Database Driver & Version
No response
Description
Inside the when closure you will not get a relationship instance, so any specific relationship function will not be available.
Expected: $query to be BelongsToMany instance
Actual: $query is a Illuminate\Database\Eloquent\Builder instance
Ex. BelongsToMany relationships, here you will not be able to call the wherePivot*-methods.
return MyModel::find(2)
->someRelationship()
->when(true, function($query) {
logger($query::class); // Illuminate\Database\Eloquent\Builder
$query->wherePivotBetween('updated_at', ['2000-05-05', '2024-05-05']);
return $query;
})->get();
Steps To Reproduce
Create a model any kind of relationship and and fire a query that uses the relationship. Like in the example above.