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 - “试图获取非对象的属性”的主要内容,如果未能解决你的问题,请参考以下文章

laravel 试图获取非对象的属性

试图获取非对象的属性 [laravel 5.2]

Laravel 问题-“试图获取非对象的属性”

Laravel:试图获取非对象的属性

Laravel 属于试图获取非对象的属性

Laravel Join:试图获取非对象的属性