【问题标题】:Chainings multi-to-one relations in Laravel在 Laravel 中链接多对一关系
【发布时间】:2016-10-10 13:23:32
【问题描述】:

我有 3 个模型:用户、查询、报价。关系是用户有很多查询,查询有很多报价。

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

其实我想得到的是一个嵌套对象 $queries like

user:
  query1:
    offer1
    offer2
  query2:
    offer3
    offer4

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

【问题讨论】:

    标签: mysql laravel eloquent


    【解决方案1】:

    你可以有类似的东西:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-11
      • 2014-04-21
      • 2023-01-13
      • 2018-06-15
      • 2018-09-27
      • 1970-01-01
      • 2017-12-24
      • 1970-01-01
      相关资源
      最近更新 更多