asciisd/referrals-laravel

为您的laravel项目添加推荐功能

v2.4.2 2023-10-19 12:42 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中注册它。