【问题标题】:How I use relationship in blade template (hasOne) || Laravel我如何在刀片模板 (hasOne) 中使用关系 ||拉拉维尔
【发布时间】:2018-07-20 19:08:48
【问题描述】:

好的,我正在尝试通过关系 hasOne 在帖子中获取“喜欢”和“用户”。

这是我的Post.php 模型 类帖子扩展模型 { 受保护的 $table = 'posts';

public function User()
{
    return $this->hasOne(User::class, 'id', 'user_id');
}

public function Like()
{
    return $this->hasOne(Like::class, 'post_id', 'id');
}}

我的刀片模板

@foreach ($showdeals as $deal)


                                <div class="tab-pane active" id="home" role="tabpanel">
                                    <div class="card-body">
                                        <div class="profiletimeline">

                                            {{$deal->like->status}}
                                            <br>
                                            {{$deal->user->email}}

                        <div class="sl-item">
                            <div class="sl-left"> <img src=" {{asset( '/assets/images/users/2.jpg')}}" alt="user" class="img-circle"> </div>
                            <div class="sl-right">
                                <div> <a href="#" class="link">{{$deal->user->username}}</a> || {{$deal->subject}} <Br> <span class="sl-date">{{$deal->created_at}}</span>
                                    <div class="m-t-20 row">
                                        <div class="col-md-3 col-xs-12"><img src="{{$deal->image}}" alt="user" class="img-responsive radius"></div>
                                        <div class="col-md-9 col-xs-12">
                                            <p> {{$deal->body}} </p> <a href="{{$deal->link}}" class="btn btn-success"> עבור למוצר </a></div>
                                    </div>
                                    <div class="like-comm m-t-20"> <a href="javascript:void(0)" class="link m-r-10">2 תגובות</a> <a href="javascript:void(0)" class="link m-r-10"><i class="fa fa-heart text-danger"></i> 5 לייקים</a> </div>
                                </div>
                            </div>
                        </div>




                    </div>
                    <hr></div>
            </div>

                @endforeach

还有我的控制器

类 PostsController 扩展控制器 {

public function showdeals()
{

    $showdeals = Posts::with( 'User', 'Like')->get();
        return view('posts.show', compact('showdeals'));
}




public function helpnewview(){
    return view('posts.anew');
}


public function helpnew(Request $request){
    //User pick link
    $userlink = $request['userlink'];
    return \Redirect::route('newdeal', compact('userlink'));
}



public function new(Request $request)
{
    //Emdeb user link
    $link = Embed::create($request['userlink']);
    $linke = $request['userlink'];
    return view('posts.new', compact('link', 'userlink', 'linke'));
}




public function create(Request $request)
{

    $posts = New Posts;
    $posts->user_id = Auth::User()->id;
    $posts->subject = $request['subject'];
    $posts->body = $request['body'];
    $posts->link = $request['link'];
    $posts->price = $request['price'];
    $posts->image = $request['image'];
    $posts->tag = $request['tag'];
    $posts->save();

    return back();
}

}

现在,如果我执行{{$deal-&gt;user-&gt;email}} 之类的操作,它会起作用, 如果我去这样的事情{{$deal-&gt;like-&gt;status}} 它不起作用, 我错过了什么吗?

【问题讨论】:

  • 我看到很多大写字母问题,不知道这是否会弄乱您的代码
  • 不好,不用大写也一样。
  • 还有{{$deal-&gt;like}} 我得到{"id":1,"user_id":1,"post_id":1,"status":0,"created_at":"2018-02-09 20:19:30","updated_at":"2018-02-09 20:19:30"}
  • 你只是以错误的方式获取关系,看看答案

标签: php laravel has-one


【解决方案1】:

如果您希望 multiple relationships 被热切加载,您需要使用一系列关系:Model::with(['rl1', 'rl2'])-&gt;get();

public function showdeals()
{
    ...
    $showdeals = Posts::with(['User', 'Like'])->get();
    ...
}

编辑:

从我看到的 cmets 中的 json 来看,您的 Like 模型中没有名为 status 的属性,因此这可能是问题的根源

【讨论】:

  • 感谢回复,我加了“[]”,还是一样。与{{$deal-&gt;like}} 我得到{"id":1,"user_id":1,"post_id":1,"status":0,"created_at":"2018-02-09 20:19:30","updated_at":"2018-02-09 20:19:30"}
  • 您能否在您的问题中也包含您的Like 模型?
  • 从您发布的json 看来,您的Like 模型似乎没有status 属性@LielDahan
  • 它有一个“状态:0”
  • 那么当您在 html 中打印时,它是抛出错误还是该字段为空?
【解决方案2】:

控制器编辑这段代码

  public function showdeals()
 {
        $showdeals = Posts::all();
        return view('posts.show', compact('showdeals'));
 }

及刀片文件代码

 @foreach ($showdeals as $deal)
                            <div class="tab-pane active" id="home" role="tabpanel">
                                <div class="card-body">
                                    <div class="profiletimeline">

                                        {{ $deal->Like->status }}
                                        <br>
                                        {{ $deal->User->email }}

   @endforeach

【讨论】:

    【解决方案3】:

    我觉得一切都很好,除了

    {{$deal->like->status}}
    {{$deal->user->email}}

    请尝试

    {{$deal->Like()->status}} 
    <br> 
    {{$deal->User()->email}}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-28
      • 2021-05-21
      • 2020-11-02
      • 2021-06-14
      • 2019-04-24
      • 2017-08-24
      • 2017-10-02
      • 2021-05-04
      相关资源
      最近更新 更多