繁体   English   中英

如何将 Auth::id() 传递给 Laravel 中的控制器?

[英]How to pass Auth::id() to the controller in laravel?

我有一个支付控制器,但是当我对经过身份验证的user执行dd user ,它返回null

namespace App\Http\Controllers\Api;

use App\Casefile;
use App\Http\Controllers\Controller;
use App\Payment;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;

class PaymentController extends Controller
{
    public function apiPaymentByUserId(Request $request) {
        $date_from = $request->$date_from;
        $date_to = $request->$date_to;

        $idAuthenticated = Auth::id();

        DB::connection()->enableQueryLog();

        $payments = DB::table("payments")
                        ->join('casefiles', 'casefiles.id','=', 'payments.casefile_id')
                        ->join('users', 'users.id', '=', 'casefiles.user_id')
                        ->select("payments.*")
                        ->where("payments.created_at", ">=", $date_from)
                        ->where("payments.created_at", "<=", $date_to)
                        ->where("casefiles.user_id", "=", $idAuthenticated)
                        ->get();

        // @dd(DB::getQueryLog());

        @dd($idAuthenticated);
     
        return response()->json([ 
            'success' => true, 
            'response' => $payments 
        ]);
    }
}

我需要最后一个where子句中的auth id但它返回null

我错过了什么? 我应该复制并粘贴更多代码以使其更清晰吗? 我获取参数的路由操作是POST

您可以像这样获取id

$idAuthenticated = Auth::user()->id;

是的,您可以获得这样的身份验证值:

$idAuthenticated = Auth::user()->id;
$username = Auth::user()->name;
$email = Auth::user()->email;

要么

$user = findOrFail(Auth::user()->id);

这看起来像一个 API 请求,如果你的默认 auth 守卫的配置不是API ,你必须分配这样的守卫: auth('api')->user()->id; .

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM