我有一张桌子:
id
employee_name
manager_id
在此表中,manager id是同一个表中id的外键。
我有另一个包含项目的表
id
employee_id
在此表中,employee_id是employee表
中id的外键我尝试在控制器中从manager_id获取名称:
public function show(Employee $managers, $id)
{
$manager = $managers::find($id)->manager;
\Debugbar::info($manager);
}
我的App \ Employee文件是这样的:
class Employee extends Model {
protected $table = 'employees';
public $timestamps = true;
public function projects()
{
return $this->hasMany('App\Projects');
}
public function manager()
{
return $this->hasOne('App\Employee');
}
}
我得到的问题是:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'employees.employee_id' in 'where clause' (SQL: select * from `employees` where `employees`.`employee_id` = 1 and `employees`.`employee_id` is not null limit 1)
对我而言,它表明它正在从另一个函数中获取sal语句中的employee_id,它只应该获取同一个表中的id。
答案 0 :(得分:2)
您可以在没有 manager_id 的情况下进行操作。我希望第二个参数适用于您的ID不符合 tablename_id 约定的情况。
public function manager()
{
return $this->belongsTo('App\Employee');
}
答案 1 :(得分:1)
你应该改变:
public function manager()
{
return $this->hasOne('App\Employee');
}
到
public function manager()
{
return $this->belongsTo('App\Employee','manager_id');
}