我有以下表格
事件
id
name
start_date
end_date
EventLineItems (属于事件和产品)
id
event_id
product_id
quantity
产品
id
name
quantity
rack
section
level
position
目前我的events.show文件的刀片看起来像这样
@foreach ($event->lineitems as $item)
<tr>
<td>{{$item->product->id}}</td>
<td>{{$item->quantity}}</td>
<td>{{$item->product->name}}</a></td>
<td>{{$item->resource_id}}</td>
<td>{{$item->product->rack}} - {{$item->product->section}} - {{$item->product->level}} - {{$item->product->position}}</td>
</tr>
@endforeach
我希望能够在我的视图中调用$ item-&gt; product-&gt;位置,而不是单独调用每个字段。我认为这将作为一个功能在我的模型中,但不知道如何或什么谷歌。
出于简单的目的,考虑(发票,线条,产品)
答案 0 :(得分:0)
我不知道您的数据库结构如何,但我认为您的商品模型属于产品。以下是使用大量猜测工作的例子......
因此,您的function product()
{
return $this->belongsTo(Product::class);
}
function event()
{
return $this->belongsTo(Event::class);
}
模型将包含。
function lineItems()
{
return $this->hasMany(EventLineItem::class);
}
您的活动模型将包含以下内容:
$events = Event::with(['lineItems', 'lineItems.product'])->get();
然后,当您使用Eloquent查询数据库时,您将执行以下操作:
accessor
这将获取所有事件,包含所有lineItems和与每个lineItems相关联的产品
请参阅https://laravel.com/docs/5.4/eloquent-relationships#querying-relations和https://laravel.com/docs/5.4/eloquent-relationships#eager-loading了解更多信息
根据更新后的问题进行修改:
您可以在模型中定义public function getLocationAttribute()
{
return sprintf('%s - %s - %s - %s', $this->attributes['rack'], $this->attributes['section'], $this->attributes['level'], $this->attributes['position']);
}
。 https://laravel.com/docs/5.4/eloquent-mutators#accessors-and -mutators
{{ $item->product->location }}
然后在您看来,this.setState({visible: !this.state.visible});