试图获得 属性 'id' 的非对象
Trying to get property 'id' of non-object
我想显示 post 在墙上发帖的用户的 ID,但它说 error.I 正在学习 laravel 中的关系。
Post 属于 1 个用户。
1 个用户可以有多个 post。
谢谢。
Post 型号
class Post extends Model
{
public function users(){
return $this->belongsTo('\App\User');
}
post 控制器
class PostsController extends Controller
{
public function index()
{
$p = \App\Post::all();
return view('posts.index',compact('p'));
}
}
posts\index
<?php
foreach ($p as $value) {
echo $value->title." ".$value->body." posted by ".$value->users->id."
<br>";}
?>
$value->users->id
应该是
答:$value->users()->id
或像这样更新您的控制器:
乙:$p = \App\Post::with('users')->get();
首先:您的 post 只有 1 个用户作为作者(作者),所以将其设为 user()
而不是 users()
添加关系到用户模型public function posts() {
关系是hasMany
使用 eagle load 获取数据 $posts = Post::with('user')->get();
通过这种方式,您可以在 blade 中获得您的作者信息,例如:
@foreach($posts as $post)
{{$post->title}} <br>
{{$post->user->name}}
@endforeach
希望对您有所帮助。
您可以 dd($value->users) 并观看它!
我想显示 post 在墙上发帖的用户的 ID,但它说 error.I 正在学习 laravel 中的关系。 Post 属于 1 个用户。 1 个用户可以有多个 post。 谢谢。
Post 型号
class Post extends Model
{
public function users(){
return $this->belongsTo('\App\User');
}
post 控制器
class PostsController extends Controller
{
public function index()
{
$p = \App\Post::all();
return view('posts.index',compact('p'));
}
}
posts\index
<?php
foreach ($p as $value) {
echo $value->title." ".$value->body." posted by ".$value->users->id."
<br>";}
?>
$value->users->id
应该是
答:$value->users()->id
或像这样更新您的控制器:
乙:$p = \App\Post::with('users')->get();
首先:您的 post 只有 1 个用户作为作者(作者),所以将其设为 user()
而不是 users()
添加关系到用户模型
public function posts() {
关系是hasMany
使用 eagle load 获取数据
$posts = Post::with('user')->get();
通过这种方式,您可以在 blade 中获得您的作者信息,例如:
@foreach($posts as $post)
{{$post->title}} <br>
{{$post->user->name}}
@endforeach
希望对您有所帮助。
您可以 dd($value->users) 并观看它!