显示具有多对多关系的字段laravel 5.4

时间:2018-07-07 16:35:53

标签: php laravel laravel-5.4

我是laravel 5.4的初学者。我只想问。我想在“分配”表中显示“收集器”,但不显示。

Screenshot of the Assignments Index

我的作业index.blade.php中的代码

<td>{{ $assignment->collector['firstname'] }} {{ $assignment->collector['lastname'] }}</td> 

Assignment.php模型

public function collectors()
{
    return $this->belongsToMany(Collector::class);
}

Collector.php模型

public function assignments()
{
    return $this->belongsToMany(Assignment::class);
}

AssignmentsController

public function index()
{
    $assignments = Assignment::all();

    return view('assignments.index', compact('assignments'));
}

我研究如何显示具有多对多关系的收藏家。我阅读了有关使用数据透视的文档,但是仍然有错误。您能帮我解决这个问题吗?谢谢

1 个答案:

答案 0 :(得分:2)

$collector是一个对象,而不是数组。使用->语法访问单个收集器模型上的属性:

$collector->firstname

由于这种关系是多对多的,因此需要两个循环:

@foreach($assignments as $assignment)
     @foreach($assignment->collectors as $collector)
        <td>{{ $collector->firstname }} {{ $collector->lastname }}</td>
    @endforeach
@endforeach

如果发现经常需要同时使用两个字段(例如名字和姓氏),则可以在Collector模型上创建访问器以轻松地将它们加入:

public function getFullNameAttribute()
{
    return $this->getAttribute('firstname') . ' ' . $this->getAttribute('lastname');
}

允许您这样做:

@foreach($assignments as $assignment)
     @foreach($assignment->collectors as $collector)
        <td>{{ $collector->fullname }}</td>
    @endforeach
@endforeach