我有三个模型Bill
,Product
和Process
。 Bill
与Product
有ManyToMany关系,数据透视表有一些额外的字段。我编写Bill
模型类,如下所示:
<?php
class Bill extends Model
{
function products(){
return $this->belongsToMany(\App\Product::class)
->withPivot('process_id') // the id of the Process
->withTimestamps();
}
}
Process
模型是带有id
和name
的简单表。我正在关联数据透视表中的ID以引用流程,该名称可能会随时间变化,但仍引用相同的概念,因此我无法关联该名称。
单个Bill
的显示页面列出了与表相关的产品,如下所示:
@foreach($bill->products as $product)
<tr>
<td>{{$product->barcode}}</td>
<td>{{$product->pivot->process_id}}</td>
</tr>
@endforeach
所以问题是我需要进程的名称,但是我有ID。我不确定如何命名。
谢谢
答案 0 :(得分:1)
如果没有与Process
的直接关系,则可能需要在Product
模型上添加一个辅助函数,以获得Process
的名称。
在您的产品型号中:
public function processName($processId) {
return Process::where('id', $processId)->pluck('name')->first();
}
您认为:
<td>{{$product->processName($product->pivot->process_id) }}</td>
也许有更好的方法,但是应该可以用这种方法。