У меня есть несколько схем, как такLaravel 5 - Выполнение объединения с таблицами базы данных
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('userName')->default('');
$table->string('userEmail')->default('');
$table->tinyInteger('active')->default(1);
$table->integer('departmentId')->unsigned()->default(0);
$table->foreign('departmentId')->references('departmentId')->on('departments')->onDelete('cascade');
$table->timestamps();
});
Schema::create('departments', function (Blueprint $table) {
$table->primary('departmentId');
$table->integer('departmentId')->unsigned()->default(0);
$table->string('departmentName')->default('');
$table->tinyInteger('active')->default(1);
$table->timestamps();
});
Так Пользователь принадлежит Департаменту, и Департамент может иметь множество пользователей.
В одном из моих контроллеров, я использую, чтобы сделать следующее, чтобы получить список пользователей для конкретного отдела
$users = User::select('userName', 'id')->where('departmentId', 2)->get();
Поскольку я получить отделы из Active Directory, я с тех пор обнаружил, что это не хороший способ, потому что идентификаторы для отделов меняются. Таким образом, теперь мне нужно получить пользователей через departmentName. На данный момент я пытаюсь что-то вроде этого
$test = DB::table('users')
->join('departments', 'users.departmentId', '=', 'departmentId')
->select('users.userName', 'users.id')
->get();
Однако это возвращает следующую ошибку
SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'departmentId' in on clause is ambiguous (SQL: select `users`.`userName`, `users`.`id` from `users` inner join `departments` on `users`.`departmentId` = `departmentId`)
Как бы это было возможно, чтобы получить все пользователи для конкретного departmentName? Так сказать, я хотел получить всех пользователей, которые принадлежат к отделу технологий, как я могу это сделать?
Благодаря