asciisd / referrals-laravel
为您的laravel项目添加推荐功能
This package is auto-updated.
Last update: 2024-09-19 14:41:36 UTC
README
兼容laravel >= 8.0
安装
要在您的项目中安装此包,您需要使用composer要求它。
$ composer require asciisd/referrals-laravel
配置
首先,您需要通过将配置文件发布到您的项目 config
目录来设置包配置。
要发布 referrals.php
配置文件,请使用 publish
命令
$ php artisan vendor:publish
并在提供者列表中选择 ReferralsLaravelServiceProvider
。
接下来,在您的 .env
文件中,添加您想要邀请用户重定向到的路由。
referral_route='route_name'
默认情况下,被邀请的用户将被重定向到带有路由 register
的注册页面。
如果您计划使用cookie保存推荐令牌,默认情况下,cookie的有效期为24小时。您可以通过在 .env
文件中设置 referral_token_cookie_lifetime
来自定义cookie的有效期。
referral_token_cookie_lifetime=1440
使用方法
要使用此包在项目中,只需在您的用户模型中使用 Referrable
特性。
class User extends Authenticatable implements MustVerifyEmail{ /*...*/ use \Asciisd\ReferralsLaravel\app\Traits\Referrerable; /*...*/ }
接下来,使用 php artisan migrate
迁移数据库文件。此迁移将创建新的 referrals
表。与用户表创建了一对多关系。
referrer_id
是发送邀请链接的用户id。
将推荐令牌保存到cookie中
为了进一步使用推荐令牌,您可以在 Kernel.php
文件中使用 ReferralsLaravel
中间件。
您可以设置别名以使用特定路由
protected $middlewareAliases = [ /*...*/ 'referrals' => \Asciisd\ReferralsLaravel\app\Http\Middleware\ReferralsLaravel::class, ];
或者您可以将它设置为任何中间件组
protected $middlewareGroups = [ 'web' => [ /*...*/ \Asciisd\ReferralsLaravel\app\Http\Middleware\ReferralsLaravel::class, ], /*...*/ ]
检索推荐数据
要获取所有用户推荐,使用用户对象的 referrer
关系属性以及用户对象。
foreach ($user->referrals as $referral) { $referral->referral_token; }
要从推荐表中获取用户推荐详情,使用 referrals
属性。
// Get authenticated referral token auth()->user()->referral->referral_token;
要检查用户是否被其他用户邀请,在用户对象上使用 isReferred()
方法。
// Return true if the user is invited // and false if the user was not invited by other user. $user->isReferred();
要检查用户是否有推荐令牌,使用 hasReferralToken()
方法。
// Return true if the user has referral token, or false if not. $user->hasReferralToken();
要生成用户推荐令牌,使用 generateReferalToken()
方法。该方法检查用户是否有推荐令牌,然后生成推荐令牌。
$user->generateReferralToken();
要获取推荐链接,您可以将 referral_link
属性添加到 User
模型中的 $append
数组,并将其用作用户属性
protected $append = ['referral_link'];
或者,您可以使用带有用户对象的 getReferralLink()
方法。
// Get the referral link with the user redirect route // ex: https://mydomain.com/register?ref=34532234 $user->getReferralLink();
要获取用户推荐令牌,您可以将 referral_token
属性添加到 User
模型中的 $append
数组,并将其用作属性
protected $append = ['referral_token'];
或者,您可以使用带有用户对象的 getReferralToken()
方法。
$user->getReferralToken();
使用Nova注册
添加 Referral
资源将在发布服务提供者时自动发布。要使用Nova使用此包,只需将 Referral
资源添加到 NovaServiceProvider
文件中,以在Nova中注册它。