无法使用函数 belongsToMany 从表中获取数据

我正在尝试将学生数据与组数据一起存储在数组中。例如:


groups


id - 1

name - P1

student_id - 1


id - 2

name - P1

student_id - 2


id - 3

name - P2

student_id - 3

在这里我想要这样的门数据


[

  {name: 'P1', students: [{id: 1, name: 'John'}, {id: 2, name: 'Liza'}]},

  {name: 'P2', students: [{id: 3, name: 'Bob'}]},

]

表:


users


id - bigint unsigned

name - string

...other columns

团体


id - bigint unsigned

name - string

student_id

...other columns

Group.php 模型


<?php


namespace App;


use Illuminate\Database\Eloquent\Model;


class Groups extends Model

{

    public $table = "groups";

    public $timestamps = false;


    public function students(){

        return $this->belongsToMany('App\User', 'groups', 'student_id', 'id');

    }

}

用户控制器.php


public function groupsAdmin(){

   return view("groups", ["groups" => Groups::with(['students'])->get()]);

}

使用此代码,我得到了空的学生数组。


一只名叫tom的猫
浏览 63回答 1
1回答

眼眸繁星

它的,belongsToMany 从用户到组,所以它应该是这样的。您需要另一个表(数据透视表),将其命名为 group_user。group_user table:-user_idgroup_id并从 grups 表中完全删除 student_id。现在转到用户模型并输入此方法:public function groups(){&nbsp; &nbsp; return $this->belongsToMany(Group::class);}并转到组模型并输入此代码&nbsp;public function users()&nbsp;{&nbsp; &nbsp; return $this->belongsToMany(User::class);&nbsp;}使用上面的代码,您可以访问来自用户的组和来自组的用户,如下所示:$user = User::first();$groups = $user->groups;希望这会有所帮助,请参阅此处的文档:&nbsp;Eloquent Many to Many relationship
打开App,查看更多内容
随时随地看视频慕课网APP