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

标签 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);
}

分配 Controller

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

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

我搜索如何显示具有多对多关系的收集器。我阅读了有关使用数据透视表的文档,但仍然存在错误。你能帮我解决这个问题吗?谢谢

最佳答案

$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

关于php - 显示具有多对多关系的字段 laravel 5.4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225032/

相关文章:

php - 在 PHP 中安全地保存 session 数据

php - 单行数据库的随机输出

mysql - Laravel5.3 连接并同步多个数据库

laravel - 从多维数组创建集合?

php - 如何在codeigniter中使用回调函数

javascript - 正则表达式匹配给定路径的所有有效 URL 变体

php - Laravel 作业推送到 Amazon SQS 但未处理

php - Laravel 关系内部如何运作?

laravel - 使用 phpunit.xml、.env.dusk.local 和 sqlite 内存数据库在 Dusk 中设置 Laravel 5.4

php - 如何在 Laravel 5.5 中获取变量中的文件内容