Primary Key 与 laravel 搜索的默认 id 不同

Primary Key is different from the default id that laravel searches for

我在 table 中添加了一个自定义主键,现在 Laravel 根本找不到结果。给出找不到页面的错误。

NotFoundHttpException

没有模型 [App\usersinformation] 的查询结果。

控制器--------------------

public function show(usersinformation $usersinformation)
{
    //
  //  $users =  $user = usersinformation::where('user-id','=',$usersinformation) -> first();
    
        return view('usersinformation.show');

}

型号--------------------

class usersinformation extends Model
{
    //

    public $table = "usersinformation";
    public $incrementing = false;
    
    protected $fillable = [

        'fname','lname', 'user-picture', 'phone-number', 'user-id', 'place-id'

    ];
    protected $primaryKey = 'user-info-id';

    public function users(){
        $this -> belongsTo('App\users');
    }

路线----web.php

Route::post('/show','App\Http\Controllers\usersinformationController@show');

仍然面临同样的问题,如果我注释主键,当我在模型中添加自定义主键时,它会给出错误,即在 table 中找不到 id 字段,它会给出找不到错误页面。

您正在键入提示 usersinformation $usersinformation,因此它试图找到您传入的 ID 的记录。在下一行中,您试图将 ID 传递到用户 ID,所以我猜你实际上是将用户标识传递给路由,而不是用户信息行的标识。如果是这种情况,那么您需要更改类型提示,这样它就不会在进入函数之前尝试查找记录。

public function show($user_id)
{
  $user_information = usersinformation::where('user-id','=',$user_id) -> first();
    
  return view('usersinformation.show', ['userinformation' => $user_information]);

}

您的 primaryKey 行很好并且应该可以工作,但要知道 table 和列名中的破折号是强烈反对的,因为它会导致各种混乱。下划线要好得多。有关详细信息,请参阅 this link