laravel hasone从id获得名字

时间:2016-04-09 15:28:21

标签: laravel-5 eloquent laravel-5.2

我有一张桌子:

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。

2 个答案:

答案 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');
}