在Laravel中链接多对一关系

时间:2016-10-10 13:23:33

标签: mysql laravel eloquent

我有3个型号:User,Query,Offer。关系是用户有很多查询,查询有很多优惠。

在控制器中我使用$queries=User->query()->get();query()是用户模型中的hasMany方法)并将其作为参数传递给view。在视图中,我想显示来自单个用户的查询表,并计算对每个查询的所有报价。

实际上我想要的是一个嵌套对象$查询,如

user:
  query1:
    offer1
    offer2
  query2:
    offer3
    offer4

它应该如何在模型中耦合以及如何在控制器和视图中使用它?

1 个答案:

答案 0 :(得分:0)

你可以拥有类似的东西:

Class User extends Model{

protected $table = 'users';

public function query(){

  return $this->hasMany('App\Query');

}

}

Class Query extends Model{

protected $table = 'queries';

public function offer(){

  return $this->hasMany('App\Offer');

}

public function user(){

return $this->belongsto('App\User');

}

}

Class Offer extends Model{

protected $table = 'offers';

public function query(){

  return $this->belongsTo('App\Query');

}

}

然后在你的控制器中你可以得到这样的东西:

public function showUser($id){

$user = User::with('query.offer')->find($id);
return View::make('user')->with('user', $user);

}

然后在你看来,你可以有类似的东西:

@foreach($user->query as $query)
   {{$query->title}}
      @foreach($query->offer as $offer)
         {{$offer->title}}
         {{$offer->amount}}
      @endforeach
@endforeach