试图获取非对象的属性“ id”

时间:2018-08-14 22:25:08

标签: laravel laravel-5 eloquent relational-database

我想显示张贴在墙上的用户的ID,但显示错误。我正在学习laravel中的关系。 帖子属于1位用户。 1个用户可以有多个帖子。 谢谢。

帖子模型

class Post extends Model
{
        public function users(){
        return $this->belongsTo('\App\User');
}

后置控制器

class PostsController extends Controller
{
    public function index()
    {
        $p = \App\Post::all();
        return view('posts.index',compact('p'));
    }
}

帖子\索引

<?php 
    foreach ($p as  $value) {
    echo $value->title." ".$value->body." posted by ".$value->users->id." 
    <br>";}
 ?>

3 个答案:

答案 0 :(得分:0)

首先:您的帖子只有1个作者(作者)用户,因此将其设为user()而不是users()

  1. 向用户模型public function posts() {添加关系是hasMany

  2. 以鹰式装载$posts = Post::with('user')->get();

  3. 获取数据

通过这种方式,您可以在刀片中获得作者信息,例如:

@foreach($posts as $post)
{{$post->title}} <br>
{{$post->user->name}}
@endforeach

希望有帮助。

答案 1 :(得分:0)

您可以dd($ value-> users)观看它!

答案 2 :(得分:-1)

$value->users->id

应该是

A:$value->users()->id

或像这样更新您的控制器:

B:$p = \App\Post::with('users')->get();