В моей модели я добавил защищенную $ table, но когда я собираюсь использовать ее, laravel не использует ее. Это моя роль модели:laravel eloquent не использует имя защищенной таблицы
class Role extends Model
{
protected $table = 'role';
protected $primaryKey = 'ROLE_ID';
protected $casts = [
'ACTIVE' => 'boolean',
];
protected $fillable = [
'ROLE', 'ACTIVE', 'TYPE'
];
public $timestamps = false;
public function groups()
{
return $this->belongsToMany(Group::class, GroupRole::class, 'ROLE_ID', 'GROUP_ID');
}
}
И это группа модель:
class Group extends Model
{
protected $table = 'groups';
protected $primaryKey = 'GROUP_ID';
protected $fillable = [
'GROUP_ID', 'GROUP_NAME', 'PARENT_GROUP', 'ACTIVE'
];
protected $casts = [
'ACTIVE' => 'boolean',
];
public $timestamps = false;
public function type()
{
return $this->belongsTo(GroupType::class, 'TYPE', 'TYPE_ID');
}
public function roles()
{
return $this->belongsToMany(Role::class, GroupRole::class, 'GROUP_ID', 'ROLE_ID');
}
}
И это group_role модель таблицы. Он обрабатывает много-много отношений между ролью и группой:
class GroupRole extends Model
{
protected $table = 'group_role';
protected $primaryKey = 'GROUP_ROLE_ID';
protected $fillable = [
'COMMENT', 'ROLE_ID', 'GROUP_ID'
];
public $timestamps = false;
}
Проблема возникает, когда я хочу использовать эту модель. Например:
$role = App\Role::first();
$groups = $role->groups;
Laravel возвращает это сообщение об ошибке:
SQLSTATE [42S02]: базовая таблица или просмотреть не найдено: 1146 Таблица 'favian_mydb.App \ GroupRole' не существует (SQL: выберите
groups
. *,App\GroupRole
.ROLE_ID
какpivot_ROLE_ID
,App\GroupRole
.GROUP_ID
вpivot_GROUP_ID
отgroups
внутреннего соединенияApp\GroupRole
наgroups
.GROUP_ID
=App\GroupRole
.GROUP_ID
гдеApp\GroupRole
.ROLE_ID
= 1)
Я попытался заменить App \ GroupRole на group_role и выполнить в mysql. Он работает нормально. Я что-то упускаю?
Нет, это не работает. –