MySql Laravel 中的查询错误

MySql Query error in Laravel

我正在使用 laravel 5.4。当试图 运行

select * from `users` inner join `addprojects` on `users`.`emp_id` = `addprojects`.`emp_id` where `emp_id` = $emp_id)"

它产生:

"SQLSTATE[23000]: Integrity constraint violation: 1052 Column 'emp_id' in where clause is ambiguous (SQL: select * from users inner join addprojects on users.emp_id = addprojects.emp_id where emp_id = $emp_id)"

$emp_id= Auth::user()->emp_id;
$projects_for_emp = DB::table('users')->join('addprojects', 'users.emp_id', '=', 'addprojects.emp_id')->where('emp_id', '$emp_id')->get();

您指定的列名存在于两个表中,因此使用 users.emp_idaddprojects.emp_id 并不重要

示例:

$emp_id= Auth::user()->emp_id;
$projects_for_emp = DB::table('users')
   ->join('addprojects', 'users.emp_id', '=', 'addprojects.emp_id')
   ->where('users.emp_id', '$emp_id')
   ->get();

因为 users 和 addprojects 表都具有相同的命名字段 "emp_id"。 您可以像下面这样更改您的代码。

$emp_id= Auth::user()->emp_id;
$projects_for_emp = DB::table('users')
    ->join('addprojects', 'users.emp_id', '=', 'addprojects.emp_id')
    ->where('users.emp_id', $emp_id)
    ->get();

emp_id 在两个表中,所以可以使用 users.emp_idaddprojects.emp_id

->where('users.emp_id', '=', $emp_id)