2015-04-07 207 views
0

我試圖從數據庫加載所有商店,商店地址和城市細節。Laravel雄辯多重連接

  • STORE_ID
  • 描述

store_address

  • STORE_ID
  • 街道
  • 拉鍊
  • city_id

城市

  • city_id

我設法ŧ o加載所有商店的地址,但我遇到了按城市ID加載城市名稱的問題。

這是我目前得到:

{ 
    "store_id":1, 
    "name":"Store Name", 
    "description":"Store description", 
    "created_at":"-0001-11-30 00:00:00", 
    "updated_at":"-0001-11-30 00:00:00", 
    "address":{ 
     "store_id":1, 
     "street":"Street name", 
     "zip":00000, 
     "city_id":1 
    } 
} 

我的代碼:

$stores = Store::with('address')->get(); 

class Store extends Eloquent 
{ 

    protected $table = 'stores'; 
    protected $primaryKey = 'store_id'; 

    public function address(){ 
     return $this->hasOne('StoreAddress', 'store_id'); 
    } 
} 

class StoreAddress extends Eloquent 
{ 

    protected $table = 'store_address'; 
    protected $primaryKey = 'store_id'; 

} 

所以我只需要通過city_id從城市表中獲取城市的名字,我找不到實例這正是我想要做的。

謝謝。

回答

4

您應該創建belongsTo城市關係到StoreAddress模型。

你需要的東西是這樣的:

class StoreAddress extends Eloquent 
{ 

    protected $table = 'store_address'; 
    protected $primaryKey = 'store_id'; 

    public function city() 
    { 
     return $this->belongsTo('City', 'city_id'); 
    } 

} 

Ofcourse,你需要爲城市創建一個模型(如果你還沒有這麼做過)。

+0

謝謝,我已經做了類似的事情,但是我花了一段時間才明白如何在查詢中調用city()來獲取商店。 – plexcell