Find a Rector rule
Find the best Rector rule to solve your problem. Searching through 1011 rules.
Found 7 rules, grouped by set: Clear
Add generic return type to relations in child of Illuminate\Database\Eloquent\Model
use App\Account;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class User extends Model
{
+ /** @return HasMany<Account, $this> */
public function accounts(): HasMany
{
return $this->hasMany(Account::class);
}
}
Add generic return type to relations in child of Illuminate\Database\Eloquent\Model
use App\Account;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class User extends Model
{
+ /** @return HasMany<Account> */
public function accounts(): HasMany
{
return $this->hasMany(Account::class);
}
}
Add generic return type to relations in child of Illuminate\Database\Eloquent\Model
use App\Account;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany;
class User extends Model
{
+ /** @return HasMany<Account, $this> */
public function accounts(): HasMany
{
return $this->hasMany(Account::class);
}
}
Add type hinting to where relation has methods e.g. whereHas, orWhereHas, whereDoesntHave, orWhereDoesntHave, whereHasMorph, orWhereHasMorph, whereDoesntHaveMorph, orWhereDoesntHaveMorph
-User::whereHas('posts', function ($query) {
+User::whereHas('posts', function (\Illuminate\Contracts\Database\Query\Builder $query) {
$query->where('is_published', true);
});
-$query->whereHas('posts', function ($query) {
+$query->whereHas('posts', function (\Illuminate\Contracts\Database\Query\Builder $query) {
$query->where('is_published', true);
});
Change typehint of closure parameter in where method of Eloquent or Query Builder
/** @var \Illuminate\Contracts\Database\Query\Builder $query */
-$query->where(function ($query) {
+$query->where(function (\Illuminate\Contracts\Database\Query\Builder $query) {
$query->where('id', 1);
});
Automatically type hints your tappable closures
-tap($collection, function ($collection) {}
+tap($collection, function (Collection $collection) {}
Add generic Builder return type to scopes in child of Illuminate\Database\Eloquent\Model
use App\Post;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
class Post extends Model
{
+ /**
+ * @param \Illuminate\Database\Eloquent\Builder<static> $query
+ * @return \Illuminate\Database\Eloquent\Builder<static>
+ */
public function scopePopular(Builder $query): Builder
{
return $query->where('votes', '>', 100);
}
}