Laravel 5.6 - "试图获得非对象的财产"

时间:2018-05-23 09:24:15

标签: php laravel

我正在我的控制器中运行测试,以确保获得输出。不幸的是,我得到了一个"试图获得非对象的属性"错误。我只想看到名称字段显示为下面的代码。

这是我的模特(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');

这是我的架构,其中表名为members,名称字段已定义: enter image description here

就像我说的,当我在Some_url / members / 1上运行我的网址时,我得到一个"试图获得非对象的属性"错误

我哪里错了?

4 个答案:

答案 0 :(得分:5)

$member = Member::find('$id'); 

这条线是罪魁祸首。

将其更改为:

$member = Member::find($id);

原因应该是显而易见的;)

答案 1 :(得分:0)

在'return'之前也不要包括'exit'。如果您这样做,它将不会显示视图。

答案 2 :(得分:0)

$member = Member::findOrFail($id);



$member = Member::find($id);

当您使用变量作为参数时,请不要在引号中使用

答案 3 :(得分:0)

试用Route Model Binding。它看起来更清晰吗?

public function show(Member $member)
{
    return view('members/show', ['id' => $member->getKey()]); 
}