2015-12-17 42 views
0

屬於關聯關係我有以下模式Laravel - 鏈接hasOne->在鋒

CoinTransaction 
    -id 
    -name 
    -paper_transaction_id 
PaperTransaction 
    -id 
    -name 
    -paper_product_id 
PaperProduct 
    -id 
    -name 

CoinTransactionPaperTransaction具有穿過CoinTransaction.paper_transaction_id = PaperTransaction.id 1對1的關係。 PaperTransactionPaperProduct通過PaperTransaction.paper_product_idPaperProduct.id具有多對一關係。

我可以在CoinTransaction模型中使用

public function paperTransactions(){ 

     return $this->hasOne('PaperTransaction', 'id', 'paper_transaction_id'); 

    } 

我試圖連接連接CoinTransactionPaperTransaction共同所有三個一起使用

public function paperProducts(){ 

    $paperTransactions = $this->hasOne('PaperTransaction', 'id', 'paper_transaction_id'); 
    return $paperTransactions->getResults()->belongsTo('PaperProduct', 'paper_product_id'); 

} 

但這不返回有關PaperTransactionPaperProduct數據。

有沒有辦法鏈接內置的Eloquent方法來獲得我在找的東西?

回答

1

可以使用嵌套關係,例如,在你CoinTransaction模型使用下面的做:

public function paperTransaction() 
{ 
    return $this->hasOne('PaperTransaction', 'paper_transaction_id'); 
} 

在你PaperTransaction模型中使用下列內容:

public function paperProduct() 
{ 
    return $this->belongsTo('PaperProduct', 'paper_product_id'); 
} 

所以,現在,你將能夠使用類似以下的關係來查詢關係:

$coinTransaction = CoinTransaction::with('paperTransaction.paperProduct')->get(); 

所以,如果你想訪問相關模型,那麼你可以這樣做:

$paperTransaction = $coinTransaction->paperTransaction->toArray(); // or a field 
$paperProduct = $coinTransaction->paperTransaction->paperProduct->toArray(); // or a field