CollectedByPropertyToCollectedByAttributeRector

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,
    ]);