2013-04-03 46 views
4

我有以下Schema and Model設置,與此seed data三種模式的關係

我的目標是實現三方關係,這可能是一個錯誤的術語,但最後,這就是我所說的。

三通如:

  • 檢查有令牌附
  • 附加令牌具有連接其值都知道Cheque-的>令牌附着。

的問題是從TokenValue,在那裏,當我加載Values,他們不會考慮採取相關Cheque因此關係,返回屬於一個Token所有值。

我不知道Value模式是否是正確的這三方關係,因此,我也懷疑Value模型關係屬於ChequeToken是正確。

這是我當前如何請求模型(摘自設置):

Route::get('test', function() 
{ 
    $cheque = Cheq_Node::with(array('tokens' => function($query) { 
     $query->where_sortable(1); 
    }, 'tokens.values'))->first(); 

    dd($cheques); 
}); 

我試圖改變Token值參考:

public function values() 
{ 
    return $this->has_many('Cheq_Value', 'token_id')->where_node_id($this->pivot->id); 
} 

但是,生產我:

Trying to get property of non-object 

添加返回前Log::dump(dump($this)),沒有顯示出模型加載,只是一個空洞的雄辯型號:

object(Cheq_Token)[63] 
    public 'attributes' => 
    array (size=0) 
     empty 
    public 'original' => 
    array (size=0) 
     empty 
    public 'relationships' => 
    array (size=0) 
     empty 
    public 'exists' => boolean false 
    public 'includes' => 
    array (size=1) 
     'values' => null 

難怪產生有錯誤。

如何讓這種三方關係發生?

回答

0

我結束了一個不同Schema和不同Models去。

這也需要採取不同的插入路徑,導致以下test seed

$nodes = Node::with(array('tokenlinks', 'tokenlinks.token', 'tokenlinks.values'))->get(); 

與檢索這一切

0

我想你需要檢查你的數據庫模式,使用適當的外鍵來檢索正確的數據。假設你會得到你想要的結果,並不總是最好的方法。

使用在你的數據庫就可以了加入的...