试图从 laravel 8 上的数据库中获取特定记录
Posted
技术标签:
【中文标题】试图从 laravel 8 上的数据库中获取特定记录【英文标题】:Trying to get a specific record from database on laravel8 【发布时间】:2021-06-14 14:15:08 【问题描述】:我在页面中有一个基本上是登录表单的表单。现在我希望它仅通过使用用户名来获取用户名的全部记录(包括数据库中的password
、id
等)......这可能吗?
这是我最近的一次尝试,但每次我按下登录按钮时总是出错...最后一个错误是:
“试图获取非对象的属性‘用户名’(查看:E:\perkuliahan\pemrograman web lanjutan\perpustakaan\resources\views\halutama.blade.php)”
$cari = DB::select('select * from akuns where username = :username', ['username' => $vusername]);
return view('halutama')->with('cari', $cari);
在视图页面上我用它来获取数据:
$cari->username $cari->id
【问题讨论】:
我猜$cari
是一个数组或对象集合,而不是单个对象。但是您可以在控制器内部使用Log::info($cari);
或dd($cari);
进行验证。
尝试使用 Laravel 手册中建议的语法 - $user = DB::table('akuns')->where('name', $username)->first();
laravel.com/docs/8.x/…
【参考方案1】:
做得更好
$cari = DB::table('akuns')->select('*')->where('username', $vusername)->first();
【讨论】:
也许您可以详细说明 OP 如何“做得更好”,一些文档链接和/或您的查询如何工作的描述会有所帮助【参考方案2】:如果它显示"Trying to get property 'username' of non-object
,这可能意味着查询返回了一个非对象。
检查Laravel Query Builder Documentation,看看查询是否正确。
我会这样写:
$cari = DB::table('akuns')->where('username', $vusername)->get();
记得使用->get()
函数。
正如@anyber 所指出的,查询可能返回array
而不是object
。
【讨论】:
【参考方案3】:您为什么要进行原始查询?如果你使用 Laravel,通过这么简单的查询,那么你必须使用 Eloquent...不要试图重新发明***或做一些疯狂的事情而不看文档...
你的代码应该是这样的(假设你已经创建了一个模型……但我对此表示怀疑):
$cari = Akun::where('username', $vusername)->first();
return view('halutama')->with('cari', $cari);
【讨论】:
以上是关于试图从 laravel 8 上的数据库中获取特定记录的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 8:获取特定关系的“morphOne”类的所有模型的类名