我如何"加入专栏"所以我可以拨打$ product->位置

时间:2017-03-17 18:57:15

标签: laravel laravel-5 eloquent

我有以下表格

事件

    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;位置,而不是单独调用每个字段。我认为这将作为一个功能在我的模型中,但不知道如何或什么谷歌。

出于简单的目的,考虑(发票,线条,产品)

1 个答案:

答案 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-relationshttps://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});