Laravel 5.6 - “试图获取非对象的属性”
Posted
技术标签:
【中文标题】Laravel 5.6 - “试图获取非对象的属性”【英文标题】:Laravel 5.6 - "Trying to get property of non-object" 【发布时间】:2018-11-02 05:17:12 【问题描述】:我在我的控制器中运行测试只是为了确保我得到输出。不幸的是,我收到“尝试获取非对象的属性”错误。我只想看到按照下面的代码显示的名称字段。
这是我的模型(Member.php):
namespace App;
use Illuminate\Database\Eloquent\Model;
class Member extends Model
//
这是我的 MemberController.php 文件:
public function show($id)
$data = array();
$data['id'] = $id;
$member = Member::find('$id');
//Test
echo $member->name;
exit;
return view('members/show', $data);
这是我的路线:
Route::get('members/member', 'MemberController@show');
这是我的架构,其中表被命名为成员并定义了名称字段:
就像我说的,当我在 Some_url/members/1 运行我的 url 时,我收到“尝试获取非对象的属性”错误
我哪里出错了?
【问题讨论】:
将$member = Member::find('$id');
更改为$member = Member::find($id);
那行得通。不好意思。谢谢
【参考方案1】:
$member = Member::find('$id');
这条线是罪魁祸首。
改成:
$member = Member::find($id);
原因应该很明显;)
【讨论】:
【参考方案2】:也不要在“返回”之前包含“退出”。如果你这样做,它不会显示视图。
【讨论】:
我认为 OP 正在尝试编写手册dd()
。不过还是不错的选择!
我打算以后不显示任何内容。这是一个考验。谢谢【参考方案3】:
$member = Member::findOrFail($id);
或$member = Member::find($id);
当你使用变量作为参数时,不要在引号中使用
【讨论】:
【参考方案4】:试用Route Model Binding。是不是更清楚了?
public function show(Member $member)
return view('members/show', ['id' => $member->getKey()]);
【讨论】:
以上是关于Laravel 5.6 - “试图获取非对象的属性”的主要内容,如果未能解决你的问题,请参考以下文章