Я пытался использовать Eloquent для приложения, которое я делаю (будучи защищенным от Codeigniter), но я не могу заставить его работать.Использование справочной таблицы с ярким ORM Laravel: не уникальный псевдоним таблицы?
У меня есть 3 таблицы:
users
departments
department_members
(это таблица поиска)
department_members
имеет 3 поля: идентификатор, department_id и user_id. Все мои таблицы имеют свои собственные модели. Когда я пытаюсь использовать ОРМ, чтобы получить отдел для пользователя (User::find(1)->member()->first()
) все, что я получаю эту ошибку:
SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'users'
Хотя я знаю, в чем проблема, я не знаю, как решить эту проблему, так как все это генерируется ORM.
Модели:
модели Член
class Member extends Eloquent { public static $table = 'department_members'; public static $timestamps = false; public function user() { return $this->has_many_and_belongs_to('User', 'users'); } }
модель пользователя
class User extends Eloquent { public static $timestamps = false; public function member() { return $this->has_many_and_belongs_to('Member', 'department_members'); } }
модель Департамент
class Department extends Eloquent { public function member() { return $this->has_many_and_belongs_to('Member', 'department_members'); } }
Столбцы имеют подходящие имена: id как PK и соответствующие имена с прилагаемым _id.
Если вам нужна дополнительная информация, я был бы рад помочь.
Точно - 'department_members' была моей сводной таблицей, а Eloquent генерирует правильный запрос, используя это без фактического объявления (кроме этого второго параметра). Мне просто нужно определить начальную таблицу и конечную таблицу, а не среднюю таблицу. Благодаря! – AeroCross