laravel 5.4如何通过用户模型获取当前用户?和Auth :: user()不起作用

时间:2017-03-11 06:46:00

标签: mysql laravel authentication model laravel-5.4

我正在尝试通过用户模型获取当前用户,但它返回null。

$user = new User;
//$user = Auth::user();
$product = new Product;

$product->user_id = $user->user_id;
$product->save();

这就是我得到的 Integrity constraint violation: 1048 Column 'user_id' cannot be null

当我尝试使用Auth :: user()时,它会出现同样的错误。

这是我的自定义登录控制器..

public function auth(Request $request)
{
    $this->validate($request, [
        'email' => 'required|email|max:255',
        'password' => 'required|min:6',
    ]);

    $data = $request->only('email', 'password');

    if (Auth::attempt($data)) {
        $email = $request->email;
         $users = DB::table('users')
            ->where('email', $email)
            ->select('users.*', 'user_name')
            ->get();

        Session::put('set', $users);

        if ($users[0]->is_admin == '1') {
            return redirect()->intended('adminDashboard');
        }else{
            return redirect()->intended('dashboard');
        }
    }else{
        return back()->withInput()->witherrors(['Email or password did not match!']);
    }
}

这段代码出了什么问题?

3 个答案:

答案 0 :(得分:0)

请尝试:$product->user_id = Auth::id();

答案 1 :(得分:0)

更改此行:

$product->user_id = $user->user_id;

到此:

$product->user_id = auth()->user()->id;

或使用关系来创建产品:

auth()->user()->product()->create($productData);

答案 2 :(得分:0)

如果您获得当前用户详细信息而不是用户下面的代码。

$loggedInUser = Auth::user();

在用户表中插入详细信息

$loggedInUser['data1'] = $data1;
$loggedInUser['data2'] = $data2;
$loggedInUser['data3'] = $data3;

保存用户详细信息

$loggedInUser->save();