【问题标题】:Fetch data properly from DB in Laravel从 Laravel 的数据库中正确获取数据
【发布时间】:2019-04-25 13:18:37
【问题描述】:

我有两个表格“Group”(包含组)和“Schedule”(包含各个组的日程项目)。

每个计划记录都有一个 group_id。一个组可以有多个计划项目。

我想提取关于调度表的数据,并按组排序并打印出来。

类似的东西:

Group 1 (group_id=1)
- schedule 1 (id=1)
- schedule 2 (id=2)
- schedule 3 (id=3)
Group 2 (group_id=2)
- schedule 4 (id=4)
- schedule 5 (id=5)

这就像每个组的一系列日程安排。

如何使用 Laravel Eloqent 做到这一点?

【问题讨论】:

    标签: database laravel eloquent


    【解决方案1】:

    你只需要像下面这样在模型上创建关系方法

    关于模型组:

    use Illuminate\Database\Eloquent\Model;
    
    class Group extends Model
    {
        /*
        * Get the schedules of the group
        */
        public function schedule()
        {
          return $this->hasMany(Schedule::class,"group_id");
        }
    
    }
    

    模型时间表:

    use Illuminate\Database\Eloquent\Model;
    
    class Schedule extends Model
    {
        /*
        * Get the group of the schedule
        */
        public function group()
        {
          return $this->belongTo(Group::class,"group_id");
        }
    
    }
    

    通过这种方式,您可以获得该组或具有该时间表的组的时间表

    最后,您可以在控制器上为您的结果执行此操作

    Group::with('schedule')->orderBy('groups.id')->get();
    

    【讨论】:

      【解决方案2】:

      在您的组模型中

      public function schedules()
      {
          return $this->hasMany('App\Schedule');
      }
      

      所以你可以做这样的事情

      $groups = Group::with('schedules')->get();
      

      【讨论】:

        【解决方案3】:

        你可以用关系做到这一点

        您可以按照以下代码进行操作:-

        在您的组模型中添加以下代码

        public function schedule()
        {
          return $this->hasMany("App\Schedule","group_id"); // you model path
        }
        

        所以你有很多时间表,所以我们使用hasMany 然后在with方法的帮助下把所有东西都放在控制器中

        Group::with('schedule')->get()->groupBy(id);
        

        这里我们通过分组id 获取所有数据,因为我们从组模型中获取数据。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-07-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-11-12
          • 1970-01-01
          • 2019-08-15
          相关资源
          最近更新 更多