Не могу получить данные из таблицы с помощью функции ownToMany - PullRequest
0 голосов
/ 15 марта 2020

Я пытаюсь сохранить данные студентов в массиве с данными групп. Например:

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

groups

id - bigint unsigned
name - string
student_id
...other columns

группа. 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');
    }
}

UserController. php

public function groupsAdmin(){
   return view("groups", ["groups" => Groups::with(['students'])->get()]);
}

С этим кодом I получаю пустой массив студентов.

1 Ответ

1 голос
/ 15 марта 2020

свой, принадлежит ToMany от пользователей к группам, поэтому должно быть так.

вам нужна другая таблица (сводная таблица), назовите ее group_user.

group_user table:-
user_id
group_id

и полностью удалите student_id из таблицы групп.

сейчас go для модели пользователя и введите этот метод:

public function groups()
{
    return $this->belongsToMany(Group::class);
}

и go для модели группы и введите этот код

 public function users()
 {
    return $this->belongsToMany(User::class);
 }

с помощью приведенного выше кода вы можете получить доступ к группам пользователей и пользователей из группы, например:

$user = User::first();
$groups = $user->groups;

Надеюсь, это поможет, см. Do c здесь: Выражение Eloquent Many to Many

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...