我正在我的控制器中运行测试,以确保获得输出。不幸的是,我得到了一个"试图获得非对象的属性"错误。我只想看到名称字段显示为下面的代码。
这是我的模特(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上运行我的网址时,我得到一个"试图获得非对象的属性"错误
我哪里错了?
答案 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()]);
}