Laravel Отношение ко многим ко многим работает только для первой записи - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть 2 таблицы и 1 сводная таблица со многими отношениями ко многим. Однако эта связь работает только для первой записи, для второй записи эта связь не может быть обнаружена.

Это мои таблицы. Роли, Администраторы и моя сводная таблица admin_role.

Модель

Администратор. php

<?php

namespace App;

use App\Role;
use App\Notifications\AdminResetPasswordNotification;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;

class Admin extends Authenticatable
{
    use Notifiable;

    //Send Notification
        /**
     * Send the password reset notification.
     *
     * @param  string  $token
     * @return void
     */
    public function sendPasswordResetNotification($token)
    {
        $this->notify(new AdminResetPasswordNotification($token));
    }
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * Relationships
    */
    public function role() 
    {
        return $this->belongsToMany(Role::class)->using('App\RoleAdmin');
    }


}

Роль. php

<?php

namespace App;
use App\Admin;
use Illuminate\Database\Eloquent\Model;

class Role extends Model
{
    public function admin()
    {
        return $this->belongsToMany(Admin::class)->using('App\RoleAdmin');
    }
}

RoleAdmin. php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\Pivot;

class RoleAdmin extends Pivot
{
    protected $table = 'admin_role';

    protected $fillable = ['admin_id' , 'role_id'];


}

Итак, проблема сейчас заключается в

$admin = App\Admin::find(1);
$admin->role()->get();

Когда я запускаю описанный выше метод, я могу получить обратную запись.

То же самое для этого

$role = App\Role::find(1);
$role->admin()->get();

Однако для этого

$admin = App\Admin::find(2);
$admin->role()->get();

И

$role = App\Role::find(2);
$role->admin()->get();

Нет записей.

ОБНОВЛЕНИЕ: AdminRoleTable выглядит следующим образом

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