2016-07-27 45 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