问题描述
我正在尝试通过 user('id')选择任务,但是无法在 Controller 中从 DB 。 我已经尝试了很多方法,其中一些方法来自 stackoverflow ,但是它不起作用。
我尝试过:
1. $userId = Auth::check() ? Auth::id() : true;
2. Auth::user()->id;
3. public function getUserId(){
on Model} - and then get this value on Controllers
和其他一些东西
我没碰过“ app.blade.PHP ”。它与以前一样。
我可以在文件“ app.blade.PHP ”中获取数据,用户:名称,ID以及我想要的所有内容,但我需要在 folder-> file 中使用这些数据>: App \ Http \ Controllers {{SomeController}} ,但我不知道如何。
在这种情况下有人吗? 如何在Controller中获取用户ID?
谢谢大家。
解决方法
如果您需要用户 ID,只需使用其中之一:
auth()->id();
使用 Auth 门面
\Auth::id();
或者,使用请求实例
$request->user()->id
按照这个简单的控制器代码,我在这里展示了 3 种不同的方式:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class SomeController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function getUserId(Request $request)
{
$user = Auth::user(); // Retrieve the currently authenticated user...
$id = Auth::id(); // Retrieve the currently authenticated user's ID...
$user = $request->user(); // returns an instance of the authenticated user...
$id = $request->user()->id; // Retrieve the currently authenticated user's ID...
$user = auth()->user(); // Retrieve the currently authenticated user...
$id = auth()->id(); // Retrieve the currently authenticated user's ID...
}
}
,
Auth::user()->id;
如果您在尝试获取该控制器方法的那个控制器方法上具有Auth中间件,则此方法应该起作用,请检查是否添加了该中间件。
要检查,可以使用php arisan route:list
命令。
有人还在搜索这个问题的答案吗?我有一些解释,您该怎么做。
Laravel 有一个 Router ,它可以通过您想要的 Controller 路由授权过程,因此您应该在上重定向该过程路由器,并在控制器中创建构造函数,它允许您获取用户ID 。
您该怎么做?:
1 。首先,您应该找到负责授权和注册用户的 Controller 和 Route 。 就我而言: a) App \ Http \ Controllers \ HomeController b) routes \ web.php
2 。其次,您应该将您的授权 Router 重定向到 Controller ,您在此处尝试获取 Auth :: id(); 就我而言: App \ Http \ Controllers \ TasksController
所以,在 routes \ web.php 中,我这样做了:
//was
Route::get('/',[App\Http\Controllers\HomeController::class,'index'])->name('home');
//was
Auth::routes();
//was
Route::get('/home','index'])->name('home');
//added
Auth::routes();
//added
Route::get('/home',[App\Http\Controllers\TasksController::class,'index'])->name('home');
也许您应该在该控制器
上具有索引功能3 。第三,您应该在要获取用户ID 的控制器中添加构造函数,这是我从 HomeController ,它已经在那里。 就我而言,是:
public function __construct()
{
$this->middleware('auth');
}
在我的 TasksController 上具有功能的代码:
public function __construct()
{
$this->middleware('auth');
}
public function index()
{
$userId = Auth::check() ? Auth::id() : true;
}
现在我可以获取用户ID。 PS:我在Controller中TasksController类的顶部添加的构造器