主键与 laravel 搜索的默认 id 不同
Posted
技术标签:
【中文标题】主键与 laravel 搜索的默认 id 不同【英文标题】:Primary Key is different from the default id that laravel searches for 【发布时间】: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字段,它会报错页面找不到。
【问题讨论】:
自定义键是字符串还是整数? 【参考方案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 了解更多信息。
【讨论】:
谢谢,我会努力让你知道结果的。 非常感谢它解决了这个问题。我有另一个问题,我想向具有参数的视图添加路由,并且想知道是否有任何方法可以在不传递参数的情况下添加它。 我建议您提出一个新问题,这样您就可以准确地解释您需要什么,并显示您已经创建的任何代码。以上是关于主键与 laravel 搜索的默认 id 不同的主要内容,如果未能解决你的问题,请参考以下文章
jango 模型管理数据model,数据库外键主键与一对一,一对多,多对多关系