代码之家  ›  专栏  ›  技术社区  ›  Dan Micah Johnson

如何在Laravel 5.4中组合模型和按模型排序两个数据

  •  0
  • Dan Micah Johnson  · 技术社区  · 7 年前

    我希望能够输出一个部门的领导人,根据他们在一个小组中的地位我正在考虑通过从groups表中按位置排序的透视表来组合这些表。

    这是我建立的三个阶级的关系

    class Leader extends Model 
    {
       public function groups() 
       {  
           return $this->belongsToMany('App\Group');
       }
    }
    
    class Group extends Model
    {
       public function leaders() 
       {  
           return $this->belongsToMany('App\Leader');
       }
    }
    class GroupLeader extends Model
    {
       // Maybe some function here?
    }
    

    我希望能够在控制器中获取组并像这样单独传递它们。

    $group1 = Leader::where('group', '=', 'group1_name')->orderBy('position', 'asc');
    $group2 = Leader::where('group', '=', 'group2_name')->orderBy('position', 'asc');
    
    return view('page.leadership')->with([
        'group1' => $group1,
        'group2' => $group2,
    ]);
    

    然后我将传递变量以包含按顺序循环通过它们的文件。

    这是我的桌子结构

    leaders
    --------
    | id
    | first_name
    | last_name
    | deceased
    ----------
    groups
    ----------
    | id
    | group
    | title
    | position
    -----------
    group_leader
    -------------
    | id 
    | group_id
    | leader_id
    ------------
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Davit Zeynalyan    7 年前

    试试看

    $groups = Leader::whereIn('group', ['group1_name', 'group2_name'])
        ->orderBy('position', 'asc')
        ->groupBy('group', 'id')
        ->get(['group', 'id']);