如何在Laravel中制作推荐计划?

时间:2017-03-11 17:17:59

标签: laravel laravel-5 laravel-5.2 laravel-5.1 laravel-5.3

我正在尝试创建一个程序,其他用户可以使用其他已注册用户的链接进行注册。因此,当提到一个时,这就是网址的样子

mywebsite.com/register?ref_id=555 // ref_id is existing user id

我正在使用默认的Laravel身份验证。有一个隐藏的输入值,如果存在,则包含ref_id的值。我的数据库有一个名为referred_by的列,它是INT,默认设置为null。当有人使用带有ref_id的链接进行注册时,该id将保存到该用户行。 但问题是它每次都被保存为null。

这就是验证器在Auth/RegisterController.php

中的样子
protected function validator(array $data)
{
    return Validator::make($data, [
        'first_name' => 'required|max:40',
        'last_name' => 'required|max:40',
        'email' => 'required|email|max:255|unique:users',
        'account_name' => 'required|max:80',
        'account_number'=> 'required|max:15',
        'bank_name'=> 'required|max:30',
        'phone_number' => 'required|max:15',
        'ref_id' => 'nullable|numeric',
        'username' => 'required|max:15|unique:users',
        'password' => 'required|min:6|confirmed',
    ]);
}

这就是create方法的样子

protected function create(array $data)
{
    return User::create([
        'first_name' => $data['first_name'],
        'last_name' => $data['last_name'],
        'email' => $data['email'],
        'account_name'=> $data['account_name'],
        'account_number' => $data['account_number'],
        'bank_name'=> $data['bank_name'],
        'phone_number'=> $data['phone_number'],
        'username' => $data['username'],
        'referred_id' => (int)$data['ref_id'],
        'password' => bcrypt($data['password']),
    ]);
}

由于ref_id作为字符串保存在隐藏的输入字段中,我尝试在放入数据库之前将其转换为整数,但我无法使其工作。 我对如何实现这一点感到很困惑。 请帮我。 提前致谢。

1 个答案:

答案 0 :(得分:2)

您的创建功能有'referred_id' => (int)$data['ref_id'], 但您的列名称为referred_by,因此只需将referred_id更改为referred_by

即可