Changes model newCollection method to use the CollectedBy attribute
use Illuminate\Database\Eloquent\Model;
-use Illuminate\Database\Eloquent\Collection;
use App\Collections\UserCollection;
+use Illuminate\Database\Eloquent\Attributes\CollectedBy;
+#[CollectedBy(UserCollection::class)]
class User extends Model
{
- /**
- * @param array<int, \Illuminate\Database\Eloquent\Model> $models
- * @return \Illuminate\Database\Eloquent\Collection<int, \Illuminate\Database\Eloquent\Model>
- */
- public function newCollection(array $models = []): Collection
- {
- return new UserCollection($models);
- }
}
Configure your rector.php:
<?php
use RectorLaravel\Rector\Class_\CollectedByPropertyToCollectedByAttributeRector;
use Rector\Config\RectorConfig;
return RectorConfig::configure()
->withRules([
CollectedByPropertyToCollectedByAttributeRector::class,
]);