Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php UsersController`User::all()`正在工作,但`show`返回`null`_Php_Laravel - Fatal编程技术网

Php UsersController`User::all()`正在工作,但`show`返回`null`

Php UsersController`User::all()`正在工作,但`show`返回`null`,php,laravel,Php,Laravel,我想根据id获取用户,但它返回null但user::all()工作正常 索引和显示用户控件中的方法:- namespace App\Http\Controllers; use App\User; use Illuminate\Http\Request; use DB; class UsersController extends Controller { public function __construct() { $this->middleware('auth',['exce

我想根据
id
获取用户,但它返回
null
user::all()
工作正常

索引
显示
用户控件中的方法
:-

namespace App\Http\Controllers;

use App\User;
use Illuminate\Http\Request;
use DB;

class UsersController extends Controller
{
public function __construct()
{
    $this->middleware('auth',['except'=>['index','show']]);
}

public function index()
{
    $users=User::all();
    return view('dev.index')->with('users',$users); 
}

public function show(User $user)
{   
    return view('dev.show')->with('user',$user);
}


}
路线:-

Route::resource('devs','UsersController');
在视图中,我有
{{dd($user->name)}
,它在url
public/devs/{dev}
上返回
null


但是在url
public/devs
上的
索引
工作正常,您不会为整个控制器初始化用户。 每个函数都使用自己的变量

首先,我将重新配置您的路线,如下所示:

Route::get('devs', 'UsersController@show')->name('showUsers')
在你的函数显示中,我将执行以下操作

public static function show(){
   $id = 1;
   $users = User::where('id', $id')
   return view('dev.show', compact('users'));
}

您不会为整个控制器初始化用户。 每个函数都使用自己的变量

首先,我将重新配置您的路线,如下所示:

Route::get('devs', 'UsersController@show')->name('showUsers')
在你的函数显示中,我将执行以下操作

public static function show(){
   $id = 1;
   $users = User::where('id', $id')
   return view('dev.show', compact('users'));
}

这是因为您是这样定义基本路线的:

Route::resource('devs','UserController');
这意味着laravel将按如下方式格式化
show
方法:

Route::get('devs/{dev}','UserController@show');
Laravel将尝试解决此依赖项doind,如果
{dev}
与任何定义的模型类都不匹配,它将返回
null

因此,要解决这个问题,请明确定义此匹配。要完成此操作,请转到您的:

App/Providers/RouteServiceProvider.php

公共函数启动()
{
父::boot();
路由::模型('dev',App\User::类);
}

因此,现在无论Laravel在哪里读取
{dev}
路由参数,都会将其与
用户
模型匹配。

这是因为您是这样定义基本路由的:

Route::resource('devs','UserController');
这意味着laravel将按如下方式格式化
show
方法:

Route::get('devs/{dev}','UserController@show');
Laravel将尝试解决此依赖项doind,如果
{dev}
与任何定义的模型类都不匹配,它将返回
null

因此,要解决这个问题,请明确定义此匹配。要完成此操作,请转到您的:

App/Providers/RouteServiceProvider.php

公共函数启动()
{
父::boot();
路由::模型('dev',App\User::类);
}

因此,现在无论Laravel在哪里读取
{dev}
路由参数,都会将其与
用户
模型匹配。

如果您将路由路径更改为
用户
工作?我认为这就是问题的根源(模型绑定)。如果您将路由路径更改为
“用户”
工作?我认为这就是问题的根源(模型绑定)。另一个简单的选择是重命名参数:
show(User$dev){}
@TravisBritz我没有尝试过这种方法,但是如果它有效,当然可以很好地解决。祝您愉快。@HCK它现在给出了一个错误,但我会尝试修复它们,如果它有效,我将使用该方法,因为它看起来是一个更好的方法。Thanks@HCK我对你的解释投了赞成票,但有一个小小的修正:路由模型绑定只查找匹配的路由变量和参数名。只要变量名匹配(并且类型提示是一个模型),它就可以绑定correctly@HCK它现在正在工作,但我必须删除
parent::boot()和导入
使用应用程序
使用路由
,现在它开始工作了。感谢另一个简单的选项是重命名参数:
show(User$dev){}
@TravisBritz我还没有尝试过这种方法,但是如果它是有效的,当然可以很好地解决这个问题。祝您愉快。@HCK它现在给出了一个错误,但我会尝试修复它们,如果它有效,我将使用该方法,因为它看起来是一个更好的方法。Thanks@HCK我对你的解释投了赞成票,但有一个小小的修正:路由模型绑定只查找匹配的路由变量和参数名。只要变量名匹配(并且类型提示是一个模型),它就可以绑定correctly@HCK它现在正在工作,但我必须删除
parent::boot()和导入
使用应用程序
使用路由
,现在它开始工作了。ThanksAn edit被拒绝回答此问题:建议在
$users=User::where(…)的末尾添加
->->first()
->get()
;将查询生成器转换为用户模型或用户模型集合。而且,你有一个打字错误
$id'
,extra
'
。此答案的编辑被拒绝:建议将
->-first()
-get()
添加到
$users=User::where(…);将查询生成器转换为用户模型或用户模型集合。而且,你有一个打字错误<代码>$id'
,额外的
'