Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 错误异常与消息“一起引发”;试图获得财产';用户';非对象_Laravel - Fatal编程技术网

Laravel 错误异常与消息“一起引发”;试图获得财产';用户';非对象

Laravel 错误异常与消息“一起引发”;试图获得财产';用户';非对象,laravel,Laravel,我在我的laravel项目中使用关系。我正在尝试显示我的帖子和回复。但我一直在犯这个错误。我试过各种各样的解决办法,但都不管用。有人能帮我吗 后模型: protected $fillable = [ 'title', 'content', 'category_id' , 'slug', 'user_id', ]; public function user1() { return $this-&

我在我的laravel项目中使用关系。我正在尝试显示我的帖子和回复。但我一直在犯这个错误。我试过各种各样的解决办法,但都不管用。有人能帮我吗

后模型:

protected $fillable = [
                'title', 'content', 'category_id' , 'slug', 'user_id',
            ];
public function user1()
        {
                return $this->belongsTo('App\User');
        }
public function replies()
        {
                return $this->hasMany('App\Reply');
        }
答复模式:

  protected $fillable = ['content','user_id','posts_id'];


    public function post(){
        return $this->belongsTo('App\Post');
    }

    public function user()
    {
        return $this->belongsTo('App\User');
    }
后置控制器:

public function shro($slug)
    {
        $pst= Post::where('slug',$slug)->first();
        return view('posts.show')->with('p', $pst);
    }

show.blade.php

<div class="panel panel-default">
    <div class="panel-heading">

    <img src="/uploads/avatars/{{ $p->user->avatar }}" alt="" width="70px" height="60px">&nbsp;&nbsp;&nbsp;
    <span>{{ $p->user->name }}, <b>{{ $p->created_at->diffForHumans() }}</b></span></br>


    </div>

用户->化身}“alt=”“width=“70px”height=“60px”>
{{$p->user->name},{{$p->created_at->diffForHumans()}

$p
,或
$pst
(混淆变量名)为
null
,这是因为
->first()
可以返回
null
。您的数据库中是否有与
slug
匹配的
Post
记录

经验法则;永远不要假设有东西存在

在尝试访问其属性之前,添加一些逻辑以确保
Post
存在:

$post = Post::where("slug", $slug)->first();
if(!$post){
  abort(404);
}
return view('posts.show')->with('post', $post);

// OR

$post = Post::where("slug", $slug)->findOrFail(); // or firstOrFail();
return view('posts.show')->with('post', $post);
另外,请检查您的
$post->user

@if($post->user)
<img src="/uploads/avatars/{{ $post->user->avatar }}" width="70px" height="60px"/>
<span>{{ $post->user->name }}, <b>{{ $post->created_at->diffForHumans() }}</b></span></br>
@endif
@if($post->user)
用户->化身}}“width=“70px”height=“60px”/
{{$post->user->name},{{$post->created_at->diffForHumans()}
@恩迪夫

如果
$post->user
返回
null
,则会出现类似错误。

您可以通过执行以下操作立即向用户加载其相对帖子:

    //...
    $pst= Post::where('slug',$slug)->with(['user1'])->first();
    //...

用('pst')将返回视图的行更改为
returnview('posts.show')->
并将您的视图调整为
{{$pst->user->name}
您还可以将其更改为
返回视图('posts.show',['p'=>$pst])
保留变量的名称
p
无效。仍然显示“正在尝试获取非对象”的属性“user”。@N69S是一个很好的建议,但不是这里的问题。使用
->with()
返回很好(尽管令人困惑),我完全按照您所做的做了。现在找不到创建文章页面。我无法访问数据库中先前显示的帖子。我有点困惑:/我有完全相同的另一个主页,显示所有帖子。到现在为止,它一直在工作。但是我认为创建一个新帖子的选项消失了,并且说我发布的错误。在主页上我用了foreach,它运行得很好。嗯,不确定所有这些。这本应该解决/缓解眼前的问题,但如果你的问题还有更多,你有两个选择;在你的问题中添加更多信息,或者关闭此问题并提出一个新的、更集中的问题。