5.0.0
Now you can follow any models. #170
What’s Changed
- Default table name
user_followers
changed tofollowables
. - Renamed
followers.follower_id
touser_id
(you can change it in the config fileapp/follow.php
). - Renamed trait
Overtrue\LaravelFollow\Followable
touse Overtrue\LaravelFollow\Traits\Followable
. follow()
,unfollow()
andtoggleFollow()
only accept model usedOvertrue\LaravelFollow\Traits\Followable
trait now.- Removed
Followable::areFollowingEachOther
method. rejectFollowRequestFrom()
,acceptFollowRequestFrow()
,hasRequestedToFollow()
andisFollowedBy
only accept model usedOvertrue\LaravelFollow\Traits\Follower
triat now.- Rename event property
followingId
tofollowable_id
. - Added event property
followable_type
. - Added event property
user_id
. - Added trait
Overtrue\LaravelFollow\Traits\Follower
.
Full change: 59089d5
Migrate from 4.x
-
Update
composer.json
:overtrue/laravel-follow:^5.0
Then run composer update:
composer update
-
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, ];
-
Update the trait
Overtrue\LaravelFollow\Followable
toOvertrue\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; /// <...>
-
Add
doctrine/dbal
package:Before modifying a column, you must install the
doctrine/dbal
package using the Composer package manager.composer require doctrine/dbal
-
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']); }); }
-
Run migrate:
php artisan migrate
-
Done.