【问题标题】:Primary Key is different from the default id that laravel searches for主键与 laravel 搜索的默认 id 不同
【发布时间】:2022-01-13 13:07:04
【问题描述】:

我在表中添加了一个自定义主键,现在 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');

还是遇到同样的问题,如果我注释了主键,当我在模型中添加自定义主键时,会报错在表中找不到id字段,它会报错页面找不到。

【问题讨论】:

  • 自定义键是字符串还是整数?

标签: php ajax laravel laravel-5


【解决方案1】:

你正在输入usersinformation $usersinformation,所以它试图找到你传入的 ID 的记录。在下一行中,你试图将 id 传递给用户 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 行很好,应该可以工作,但要知道,强烈建议不要在表名和列名中使用破折号,因为它会导致各种混乱。下划线要好得多。请参阅this link 了解更多信息。

【讨论】:

  • 谢谢,我会努力让你知道结果的。
  • 非常感谢它解决了这个问题。我有另一个问题,我想向具有参数的视图添加路由,并且想知道是否有任何方法可以在不传递参数的情况下添加它。
  • 我建议您提出一个新问题,这样您就可以准确地解释您需要什么,并显示您已经创建的任何代码。
猜你喜欢
  • 2011-03-18
  • 2020-08-31
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
相关资源
最近更新 更多