【问题标题】:Join 2 tables to a Pivot table LARAVEL 4.2将 2 个表连接到数据透视表 LARAVEL 4.2
【发布时间】:2016-06-14 01:25:33
【问题描述】:

如何仅为已注册课程且我有 2 个表格和一个数据透视表的学生显示课程?

表 1:Home_Students : home_id , home_studid ....

表 2:Hw_Classes :class_id , class_desc , class_date ....

数据透视表:Hw_StudentClasses:Stclass_id、Stclass_classid、Stclass_studid

所以我制作了一个模型 MySeminarClasses 来与表 Hw_StudentClasses 和一个控制器 MySeminarClassesController

进行通信

我在其他表belongsToMany的模型中建立了关系

public function Users(){
    return $this->belongsToMany('User','home_id');

}
public function SeminarClass(){
    return $this->belongsToMany('SeminarClass','class_id');

}

在控制器中我也这样做了,我不太确定它是否正确,但我是按照 laravel 4.2 文档的说明这样做的

$myclasses = DB::table('Hw_StudentClasses')
    ->join('Hw_Classes','Hw_StudentClasses.Stclass_classid','=','Hw_Classes.Class_id')
    ->join('Home_Students','Hw_StudentClasses.Stclass_studid','=','Home_Students.home_studid')
    ->orderBy('class_date',strtotime('-4 month'))
    ->get();

终于在刀片中

<tbody>
    @foreach($myclasses as $i=>$myclass)
        <tr>
            <td>{{ $i+1 }}</td>
            **<td>{{ link_to_route('class.show',$myclass->Class_desc,$myclass->Class_id) }}</td>**
            <td class="text-center">{{ date('j-n-Y G:i',strtotime($myclass->class_date)) }}</td>
            <td class="text-center">{{ UserEnroll::where('Stclass_classid',$myclass->Class_id)->count() }}</td>
        </tr>
    @endforeach
</tbody>  

【问题讨论】:

    标签: laravel join laravel-4 inner-join pivot-table


    【解决方案1】:

    经过 16 个小时的奋斗......我提出了自己的问题!这个带有 Auth::user 的查询帮助了我。仅显示每个登录用户的类

    $id = Auth::user()->home_studid;
    $date = date('m-d-Y', strtotime('-4 month'));
    $seminars = Seminar::where('Package_Display', 1)
                ->orWhere('Package_Display', 2)
                ->orderBy('Package_Name', 'asc')
                ->get();
    
    
    $myclasses = DB::table('Hw_StudentClasses')
                ->join('Hw_Classes','Hw_StudentClasses.Stclass_classid','=','Hw_Classes.Class_id')
                ->join('Home_Students','Hw_StudentClasses.Stclass_studid','=','Home_Students.home_studid')
                ->where('Home_Students.home_studid','=',$id)
                ->orderBy('class_date',strtotime('-4 month'))
                ->get();
    

    希望这对某人有所帮助! ^_^

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 2018-06-30
      • 2020-06-24
      • 1970-01-01
      相关资源
      最近更新 更多