在laravel模型中使用关系如何获取刀片文件中的数据?

时间:2019-04-05 20:40:58

标签: php laravel orm eloquent

我正在从具有两个表的数据库中查询数据。

  1. 负载:
    • LoadId
    • OriginStopId
    • DestStopId
  2. 停止:
    • id
    • 城市
    • 状态
    • loadId

一个负载可能有多个停靠点,但一个停靠点有一个负载。负载至少有两个停止点,即起点和终点。

我将模型创建为

class LoadsModel extends Model
{
    protected $table = 'loads';
    public function stops(){
    return $this->hasMany('App\Stops');
    }
}

class Stops extends Model
{
   protected $table = 'stops';
   public function loads(){
    return $this->belongsTo('App\LoadsModel');
   }
}

我正在使用模型将模型传递到视图中。

  public function index()
  {
      $loads = LoadsModel::orderBy('loadId')->get();
      return view('tender.available')->with(['loads'=>$loads]);
  }

我想根据表标题在刀片中显示结果,其中“原点城市”是停靠点的原点城市,其ID与加载表中的originstopId相同,而停靠点的目标城市则用其id为“加载表中的destStopId。我想显示负载的停止次数。像这样的东西。

<table class="table">
    <tr>
       <th>Origin City</th>
       <th>Origin State</th>
       <th>Destination City</th>
       <th>Destination State</th>
       <th>Load Id</th>
       <th>Stops</th>
    </tr>
</table>

1 个答案:

答案 0 :(得分:0)

您应该使用foreach循环从每个负载访问每个属性:

@foreach($loads as $load)
 <tr>
     <th>{{$load->id}}</th>
              .
              .
              .
     <th>{{$load->anyAttributeYouWant}}</th>

     @foreach($load->stops as $stop)
         <th>{{$stop->id}}</th>
         <th>{{$stop->city}}</th>
         <th>{{$stop->state}}</th>
     @endforeach
 </tr>
@endforeach

我也已经在您的停靠站关系中提出了建议,因此您可以显示停靠站的所有属性。

您可以使用withCount method计算出货物的停靠点:

public function index()
{
    $loads = LoadsModel::orderBy('loadId')->withCount('stops')->get();
    return view('tender.available')->with(['loads'=>$loads]);
}

您可以这样在视图中访问计数:

{{$load->stops_count}}