[已解决] 关于控制器内放 model 的问题

想精简laravel的写法,在控制器获取用户信息的普通写法:

public function index(){
    $uid = Auth::user()->id;
}

在看范例的时候会有这种将model放到控制器参数中的写法

<?php

namespace App\Http\Controllers\Api;

use App\Http\Requests\Api\UserRequest;
use App\Models\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class UserController extends Controller
{

    //返回用户列表
    public function index(){
        //3个用户为一页
        $users = User::paginate(3);
        return $users;
    }
    //返回单一用户信息
    public function show(User $user){
        return $user;
    }
    ……
    //其他代码段
}

可是我在使用时返回null,请问哪里没有做好?

<?php

namespace App\Http\Controllers\User;

use App\User;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class UserController extends Controller
{

    public function index()
    {
        $openid = Auth::user()->openid;
        $user = User::select('id')->where('openid',$openid)->first();
        return view('user.index',compact('user'));
    }

    public function edit(User $user, Request $request)
    {
        print_r(Auth::check()); //这里正常返回了1
        dd($user->id); //这里返回一个null ,是为什么啊
    }
}
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案

参考下路由模型绑定。路由《Laravel 5.8 中文文档》

4年前 评论
讨论数量: 3

路由怎么写的?

4年前 评论
mengdodo

@largezhou 这种写法要搭配路由吗,我写的是最基础的样子,请问要怎么改才可以更优雅的获取到用户信息

Route::group(['prefix' => 'user', 'middleware'=>'CheckUser'], function () {
    Route::get('', 'User\UserController@index')->middleware('throttle:100')->name('user.user.index');
    Route::any('edit', 'User\UserController@edit')->middleware('throttle:100')->name('user.user.edit');
});
4年前 评论
largezhou 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!