Saya punya beberapa skema seperti itu
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();
});
Jadi seorang Pengguna termasuk dalam suatu Departemen, dan suatu Departemen dapat memiliki banyak Pengguna.
Di salah satu pengontrol saya, saya biasa melakukan hal berikut untuk mendapatkan daftar pengguna untuk departemen tertentu
$users = User::select('userName', 'id')->where('departmentId', 2)->get();
Karena saya memperoleh departemen dari Direktori Aktif, saya menyadari bahwa ini bukan cara yang baik karena id departemen berubah. Karena itu, saya sekarang perlu mendapatkan pengguna melalui departmentName. Saat ini saya sedang mencoba sesuatu seperti ini
$test = DB::table('users')
->join('departments', 'users.departmentId', '=', 'departmentId')
->select('users.userName', 'users.id')
->get();
Namun, ini mengembalikan kesalahan berikut
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`)
Bagaimana mungkin mendapatkan semua pengguna untuk nama departemen tertentu? Jadi katakanlah saya ingin mendapatkan semua pengguna yang tergabung dalam departemen Teknologi, bagaimana saya bisa melakukan ini?
Terima kasih