У меня есть 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