4
我有一個名爲buildings
和flats
如何在laravel的Eloquent ORM中編寫內部連接?
建築物表
Building_Id | Building_Name | .......| Building_Owned_By | ....
單位表
Flat_Id | Flat_Name | ........| Fk_Building_Id | .....
在我的模型表
大廈
class Building extends Eloquent {
protected $primaryKey = "Building_Id";
protected $table = 'buildings';
.......
.......
public function flat()
{
return $this->hasMany('Flat', 'Fk_Building_Id', 'Building_Id');
}
}
平
class Flat extends Eloquent {
protected $primaryKey = "Flat_Id";
protected $table = 'flats';
.......
.......
public function building() {
return $this->belongsTo('Building','Fk_Building_Id', 'Building_Id');
}
}
,並在我的控制器
$flats = Flat::where('Fk_Building_Id', '=',$buildingid)
->where('Building_Owned_By', '=',Auth::user()->Login_Id)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
但它沒有返回。
我們如何在Eloquent Orm中執行內部連接(我不想使用流利的查詢)?
更新
感謝@Creator他寶貴的時間和幫助。他幫我找到了這個。該解決方案是我們必須使用whereHas我們重寫代碼爲
$flats = Flat::whereHas('building', function($q){
$q->where('Building_Owned_By', '=',Auth::user()->Login_Id);
})
->where('Fk_Building_Id', '=',$buildingid)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
同樣的錯誤返回null – manuthalasseril
檢查答案嗎?公寓有一個建築物嗎? –
每個單位都有一個buildingId,也可能是兩個單位具有相同的buildingID可以發生。我的意思是每個buildin不包含單位 – manuthalasseril