Laravel检查值是否存在

时间:2016-06-17 17:16:12

标签: php laravel-5

我正在尝试检查系统中已有用户的sponsor_id(赞助商电子邮件)。如果赞助商存在,则允许用户继续注册,否则他们会收到错误消息。

当用户赞助商ID正确时,在注册时我想将(entry_by)字段的值设置为赞助商的用户ID。

这是我到目前为止的代码,它给了我一个错误(需要变量$referrer):

只是为了澄清代码运行良好如果我添加引用者电子邮件添加用户而不验证赞助商ID是否有效。

所以现在我需要验证输入的推荐人(赞助商电子邮件)已注册的电子邮件,如果找到设置(entry_id)到(sponsor_id)其他错误。

public function postCreate( Request $request) {

    $rules = array(
        'username'=>'required|alpha_num|min:2',
        'firstname'=>'required|alpha_num|min:2',
        'lastname'=>'required|alpha_num|min:2',
        'gender'=>'required',
        'age'=>'required|alpha_num|min:2'
        'phone'=>'required|min:10',
        'email'=>'required|email|unique:users',
        'password'=>'required|between:6,12|confirmed',
        'password_confirmation'=>'required|between:6,12',
        'province'=>'required',
        'referrer'=>'required|email',
        );  

    $validator = Validator::make($request->all(), $rules);


    if ($validator->passes()) {

        $authen = new User;
        $authen->username = $request->input('username');
        $authen->first_name = $request->input('firstname');
        $authen->last_name = $request->input('lastname');
        $authen->email = trim($request->input('email'));
        $authen->password = \Hash::make($request->input('password'));
        $authen->gender = $request->input('gender');
        $authen->phone = $request->input('phone');
        $authen->province = $request->input('province');
        $authen->referrer = $request->input('referrer');
        $authen->role_id = 3;


            // User referrer Code -- It will use entry_by == id , if the email address is the same as referrer


        if ($referrer == $email = User::findOrFail($email))
        {
            $entry_by = $id;
        }
            else
            {
                $message= " There is an error on the referrer code provided.";
            }

        $authen->save();

        $data = array(
            'username'      => $request->input('username') ,
            'firstname'     => $request->input('firstname') ,
            'lastname'      => $request->input('lastname') ,
            'email'         => $request->input('email') ,
            'password'      => $request->input('password') ,
            'gender'        => $request->input('gender') ,
            'province'      => $request->input('province') ,
            'age'           => $request->input('age') ,
            'phone'         => $request->input('phone') ,
            'referrer'      => $request->input('referrer') ,


        );

    return redirect('register')->with('message', 'Successfully registered.!');
}

public function getLogout() {
    auth()->logout();

    return redirect()->route('index');
}

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解你,但我认为这应该是这样的:

 if (User::findOrFail(input('referrer')))
        {
            $entry_by = $id;
        }
            else
            {
                $message= " There is an error on the referrer code provided.";
            }

我无法看到你在哪里初始化变量referer和email,因此我认为referer = $ input ['referer']并且电子邮件完全错误。

编辑:

//Get user input
$something = Input::get('sth');
//Check if this exists in db
$check = YourModel::findOrFail($something);

if($check) {
 // yes it is in db already
 // set some val as you wanted
$myvar = "oh boy";
} else {
 // no it's not
}