【问题标题】:Trying to get property of non-object using laravel 5.3 (message.php)尝试使用 laravel 5.3 (message.php) 获取非对象的属性
【发布时间】:2017-05-08 19:34:26
【问题描述】:

我正在尝试获取数据库中消息表中的所有 sava 消息,但出现错误。

message.blade.php:

    <div class="sms">
<ul>
        @foreach($messages as $message)
            <li class="list-group-item"> {{$message->user->name}} : {{$message->message}}
                @if($message->user_id === Auth::user()->id)
                    <div class="action">
                        <a href="/delete/messages/{{$message->id}}">
                            <span class="glyphicon glyphicon-trash" aria-hidden="true"></span>
                        </a>
                        /
                        <a href="/message/edit/{{$message->id}}">
                            <span class="glyphicon glyphicon-pencil" aria-hidden="true"></span>
                        </a>
                    </div>
                @endif
            </li>
        @endforeach
</ul>
</div>

控制器:

public function GetMessages(){
    $messages = Messages::all();
    return view('message')->with('messages',$messages);
}

消息模型:

    class Messages extends Model
{
    protected $table = 'messages';
    protected $fillable = ['message','user_id'];
    protected $timestamp=false;

    public function user()
    {
        return $this->hasOne('App\User', 'id', 'user_id');
    }
}

【问题讨论】:

  • 可能有没有用户的消息)
  • 你的第 9 行是哪一行?
  • 第 9 行 -> @foreach()
  • 显示消息模型
  • @mcklayin 我上传模型。

标签: php laravel-5.3


【解决方案1】:

除非您确信始终将用户分配给消息,否则您应该始终检查关系。

{{ ($message->user) ? $message->user->name : 'No User' }}

【讨论】:

  • 这是一个拐杖)我们需要查看消息模型以了解发生了什么
  • 为什么需要看他们的模型?可能只是其中一条消息在数据库中没有 user_id,不是一个硬概念..
  • 你可能是对的,当然,但是根据代码如果没有用户,我们需要通过检查上面的代码来删除\隐藏
  • 可能不会。如果$message-&gt;user_id 为空,$message-&gt;user_id === Auth::user()-&gt;id 永远不会计算为真,因为Auth::user()-&gt;id 通常永远不会为空。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签