【问题标题】:Laravel accessing pivot table name field in a Many to Many relationLaravel 访问多对多关系中的数据透视表名称字段
【发布时间】:2018-04-24 07:31:49
【问题描述】:

我正在从我的 Sermon 表中检索最新的 4 行,并将其传递给使用 View Composer 的视图。但我不知道如何访问附在每个布道上的标签

namespace App\Http\ViewComposers;
use App\Sermon;
use App\Tags;

use Illuminate\View\View;

class SermonComposer
{
public function compose(View $view)
{

    $sermons = Sermon::take(4)->orderBy('id','DESC')->get();


    $view->with('sermons', $sermons );


}

}

如何访问与单个讲道相关的标签名称? 一个布道可以有多个标签

这就是我的讲道模型中的内容

public function tag()
{
    return $this->belongsToMany('App\Tag');
}

这是我的刀

 @foreach ($sermons as $sermon )
            <tr>
                <td>{{$sermon->id}}</td>
                <td>{{$sermon->title}}</td>

                <td>{{$sermon->pivot->name}}</td>
                <td><img src="{{ asset('img/sermons/'. $sermon->sermon_image)}}" alt=""></td>
                <td><a href="#">@include('svg.edit')</a></td>
            </tr>
        @endforeach

如果我 {{dd($sermons)}} 这就是我得到的,我注意到我的关系数组是空的

【问题讨论】:

  • 显示您与问题中标签的关系。
  • 如果你设置了正确的关系,你可以使用$sermon-&gt;pivot-&gt;xxx
  • 在我的刀片或我的视图作曲家文件中?
  • 展示你的讲道模型
  • 如果可能的话,在你试图访问 $sermons 的地方显示刀片视图,这将帮助我们帮助你

标签: laravel many-to-many pivot-table


【解决方案1】:

这是多对多的关系,所以你应该使用复数名称作为关系

public function tags()
{
    return $this->belongsToMany('App\Tag');
}

定义关系后,您必须在使用with() 查询时预先加载标签。

public function compose(View $view)
{

    $sermons = Sermon::with('tags')->take(4)->orderBy('id','DESC')->get();

    $view->with('sermons', $sermons );

}

然后在刀片视图中,你可以这样做

@foreach ($sermons as $sermon )
        <tr>
            <td>{{$sermon->id}}</td>
            <td>{{$sermon->title}}</td>
            @foreach ($sermon->tags as $tag )
            <td>{{$tag->name}}</td>
            @endforeach
            <td><img src="{{ asset('img/sermons/'. $sermon->sermon_image)}}" alt=""></td>
            <td><a href="#">@include('svg.edit')</a></td>
        </tr>
@endforeach

这只是我给出的示例,您的问题可能会有所不同。如果您想要更具体的答案,请显示刀片视图。

如果您有任何疑问,请发表评论。

【讨论】:

  • 此集合实例上不存在属性 [tags]。我现在收到此错误,但我的关系数组不再为空
  • 你改变了与复数tags的关系吗?
  • 在这一行&lt;td&gt;{{$sermon-&gt;pivot-&gt;name}}&lt;/td&gt; 在你的循环中你试图访问标签?
  • ErrorException (E_ERROR) Trying to get property 'name' of non-object
  • 我没有得到你得到错误的地方你能指定更多吗?顺便说一句,我已经更新了答案。请告诉我您在哪里访问标签以及错误在哪里。
猜你喜欢
  • 2020-01-09
  • 2023-02-05
  • 2018-09-23
  • 1970-01-01
  • 2020-07-28
  • 2015-02-11
  • 1970-01-01
  • 2019-02-19
  • 1970-01-01
相关资源
最近更新 更多