Skip to content

5.0.0

Compare
Choose a tag to compare
@overtrue overtrue released this 18 May 02:52
· 21 commits to 5.x since this release

Now you can follow any models. #170

What’s Changed

  • Default table name user_followers changed to followables.
  • Renamed followers.follower_id to user_id(you can change it in the config file app/follow.php).
  • Renamed trait Overtrue\LaravelFollow\Followable to use Overtrue\LaravelFollow\Traits\Followable.
  • follow(), unfollow() and toggleFollow() only accept model used Overtrue\LaravelFollow\Traits\Followable trait now.
  • Removed Followable::areFollowingEachOther method.
  • rejectFollowRequestFrom(), acceptFollowRequestFrow(), hasRequestedToFollow() and isFollowedBy only accept model used Overtrue\LaravelFollow\Traits\Follower triat now.
  • Rename event property followingId to followable_id.
  • Added event property followable_type.
  • Added event property user_id.
  • Added trait Overtrue\LaravelFollow\Traits\Follower.

Full change: 59089d5

Migrate from 4.x

  1. Update composer.json:

    overtrue/laravel-follow:^5.0
    

    Then run composer update:

    composer update
  2. Update config file config/follow.php with the following code:

    <?php
    
    return [
        /**
         * Use uuid as primary key.
         */
        'uuids' => false,
        
        /*
         * User tables foreign key name.
         */
        'user_foreign_key' => 'user_id',
    
        /*
         * Table name for followers table.
         */
        'followables_table' => 'followables',
    
        /**
         * Model class name for followers table.
         */
    
        'followables_model' => \Overtrue\LaravelFollow\Followable::class,
    ];
  3. Update the trait Overtrue\LaravelFollow\Followable to Overtrue\LaravelFollow\Traits\Follower:

    - use Overtrue\LaravelFollow\Followable;
    +use Overtrue\LaravelFollow\Traits\Followable;
    +use Overtrue\LaravelFollow\Traits\Follower;
    
    class User extends Authenticatable
    {
        use HasApiTokens;
        use HasFactory;
        use Notifiable; 
    +   use Follower; 
        use Followable;
    
    /// <...>
  4. Add doctrine/dbal package:

    Before modifying a column, you must install the doctrine/dbal package using the Composer package manager.

    composer require doctrine/dbal
  5. Create a migration file:

    php artisan make:migration update_user_follower_to_followables --table=user_follower

    With contents:

    public function up()
    {
        Schema::rename('user_follower', 'followables');
    
        Schema::table('followables', function (Blueprint $table) {
            $table->renameColumn('following_id', 'followable_id');
            $table->renameColumn('follower_id', config('follow.user_foreign_key', 'user_id'));
            $table->string("followable_type")->default(addslashes((new User)->getMorphClass()));
            $table->index(config('follow.user_foreign_key', 'user_id'));
            $table->index(['followable_type', 'accepted_at']);
        });
    }
  6. Run migrate:

    php artisan migrate
  7. Done.