【问题标题】:Undefined variable: posts (View: C:\Users\BWB\Documents\Laravel\restravels\resources\views\profile.blade.php)未定义变量:posts(查看:C:\Users\BWB\Documents\Laravel\restravels\resources\views\profile.blade.php)
【发布时间】:2020-07-06 10:55:40
【问题描述】:

所以我正在开发一个博客网站,我想将用户与某些帖子和帖子与某些用户相关联。所以我有一个个人资料页面,显示当前登录用户的信息,但不传递与用户相关的帖子。我不知道我的模型关系是否错误,但我不断收到未定义的帖子错误。 这是我的 ProfileController

<?php

namespace App\Http\Controllers;

use App\Reviews;

use Illuminate\Foundation\Auth\User;

use Illuminate\Http\Request;

class ProfileController extends Controller
{

    public function index()
    {
        $user_id=auth()->user()->id;
        $users = User::find($user_id);
        $user = User::where('id', $user_id)->get();
        $post= $users->posts;

//        $user=Auth::user();
//
//        $post= $user->posts;


        return view('profile')->with(['users' =>$user ],['posts' => $post ]);
    }
}


这是我的 Post 模型的用户方法

  public function user(){
        return $this->belongsTo('App\User');

    }

这是我的用户模型的帖子方法

 public function posts(){
        return $this->hasMany('App\Post');

    }

这是我在视图中的输出方式

 @foreach($users as $user)
                    <div class="card-body">
                        <h5 class="card-title">{{ $user->fname}}<br>{{ $user->lname}}</h5>
                        <h5 class="card-text">Email</h5>
                        <p class="h6">{{ $user->email}}</p>
                        <h5 class="card-text">Address</h5>
                        <p class="h6">Phenom Estate<br>{{$user->city}}, Kenya</p>
                        <h5 class="card-text">Award</h5>
                        <p class="h6">Globe Trotter</p>
                        <a href="#" class="btn btn-primary btn-block">Edit Profile</a>
                    </div>
                    @endforeach
                    @if (count($posts)>0)


                    @foreach($posts as $post)
                        <div class="well row">
                            <div class="col-md-4">
                                <img style="width: 100%; height: 300px" src="/storage/cover_images/{{$post->cover_image}}" alt="">
                            </div>
                            <div class="col-md-8">
                                <h3> <a href="/posts/{{$post->id}}">{{$post->title}}</a></h3>
                                <h3>{{$post->created_at}}</h3>
                            </div>
                        </div>
                    @endforeach
                    @endif

【问题讨论】:

  • 我评论了你的最后一个问题,你错误地使用了with ...with(['users' =&gt; ..., 'posts' =&gt; ...])它是一个数组,它不需要2个数组作为参数...对于with取 2 个参数,第一个参数是键,第二个参数是值
  • @lagbox aaaah 我明白了。没注意到。非常感谢!
  • 没问题.. Dan H 的回答是我更喜欢尽可能将数据传递给视图,创建视图并将数据同时传递给它...with 工作正常也很好

标签: php laravel


【解决方案1】:

您在视图返回中有错误。应该是:

return view('profile', ['users' => $user, 'posts' => $post]);

请看:https://laravel.com/docs/7.x/blade#displaying-data

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 1970-01-01
    • 2019-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-07
    • 2019-11-25
    相关资源
    最近更新 更多