2016-07-27 113 views
1

控制器代码(isn`t工作)Laravel模型,关系如何使用Eloquent进行innjoin查询?

$employees = Employee::with('department')->get(); 

型号:部门

class Department extends Model 
{ 
... 
/** 
* Defining Relationships. 
*/ 
    public function employee() 
    { 
    return $this->hasMany('GloboDeals\Employee'); 
    } 
} 

型号:员工

class Employee extends Model 
{ 
/** 
* Defining Relationships. 
*/ 
.... 
public function department() 
{ 
    return $this->belongsTo('GloboDeals\Department','departments_id','id'); 
} 

外接IDS有table_id名称。

我搜索和搜索,没有解决方案工作,所以我想我的代码只是blehhh,如果任何人都可以检查出来,并给我一个想法。

+0

您正在寻找一个员工的部门或所有员工的部门? – Vuldo

+0

什么不行?你有错误吗?你会得到意想不到的结果吗?你会得到什么结果?你期望的结果是什么? –

+0

你可以发表表格结构吗? – clod986

回答

0

雄辩会假定每个表都有一个名为id的主键列。你可以定义一个$ primaryKey属性来覆盖这个约定。在每一个你的模型添加主键,像这样的部门模式:

protected $primaryKey = 'department_id'; 

口才假设外键应该有匹配的父的ID(或自$的PrimaryKey)列中的值。换句话说,Eloquent将查找员工记录的department_id列中的部门ID列的值。如果您想将关系到使用多个id的值,你可以传递第三个参数属于关联方式识别您的自定义键:在你的情况,你在呼唤你的员工模型的部门():

return $this->belongsTo('GloboDeals\Department', 'departments_id', 'departments_id'); 

这意味着,员工模型将立即加载部门详细信息,其中employees表的departments表= departments_id的关系中的departments_id。

+0

所有表格都是复数型号名称, 部门primary id = id, 雇主primary id = id , 从部门= departments_id – buga

+0

雇用外部ID如果是这种情况,您需要更换键返回$ this-> belongsTo('GloboDeals \ Department','id','departments_id');因为'foreign_key'首先来自其他表(部门)并且本地密钥来自表(雇员)的最后部门_id, – ClearBoth