Laravel-链连接有一个->;属于雄辩的关系
我有以下模式Laravel-链连接有一个->;属于雄辩的关系,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我有以下模式 CoinTransaction -id -name -paper_transaction_id PaperTransaction -id -name -paper_product_id PaperProduct -id -name CoinTransaction和PaperTransaction通过CoinTransaction.paper\u transaction\u id=PaperTransaction.id
CoinTransaction
-id
-name
-paper_transaction_id
PaperTransaction
-id
-name
-paper_product_id
PaperProduct
-id
-name
CoinTransaction
和PaperTransaction
通过CoinTransaction.paper\u transaction\u id
=PaperTransaction.id
具有一对一的关系PaperTransaction
和PaperProduct
通过PaperTransaction.paper\u product\u id
到PaperProduct.id
具有多对一关系
我可以在CoinTransaction
模型中使用将CoinTransaction
和PaperTransaction
连接在一起
public function paperTransactions(){
return $this->hasOne('PaperTransaction', 'id', 'paper_transaction_id');
}
我已经尝试使用
public function paperProducts(){
$paperTransactions = $this->hasOne('PaperTransaction', 'id', 'paper_transaction_id');
return $paperTransactions->getResults()->belongsTo('PaperProduct', 'paper_product_id');
}
但这不会返回与PaperTransaction
或PaperProduct
相关的数据
有没有一种方法可以链接内置的雄辩方法来获得我想要的东西?您可以使用嵌套关系来实现这一点,例如,在您的
Cointransation
模型中使用以下方法:
public function paperTransaction()
{
return $this->hasOne('PaperTransaction', 'paper_transaction_id');
}
public function paperProduct()
{
return $this->belongsTo('PaperProduct', 'paper_product_id');
}
$coinTransaction = CoinTransaction::with('paperTransaction.paperProduct')->get();
在您的PaperTransaction
模型中,请使用以下各项:
public function paperTransaction()
{
return $this->hasOne('PaperTransaction', 'paper_transaction_id');
}
public function paperProduct()
{
return $this->belongsTo('PaperProduct', 'paper_product_id');
}
$coinTransaction = CoinTransaction::with('paperTransaction.paperProduct')->get();
现在,您可以使用如下内容查询关系:
public function paperTransaction()
{
return $this->hasOne('PaperTransaction', 'paper_transaction_id');
}
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
您可以使用嵌套关系执行此操作,例如,在您的
CoinTransaction
模型中,使用以下内容:
public function paperTransaction()
{
return $this->hasOne('PaperTransaction', 'paper_transaction_id');
}
public function paperProduct()
{
return $this->belongsTo('PaperProduct', 'paper_product_id');
}
$coinTransaction = CoinTransaction::with('paperTransaction.paperProduct')->get();
在您的PaperTransaction
模型中,请使用以下各项:
public function paperTransaction()
{
return $this->hasOne('PaperTransaction', 'paper_transaction_id');
}
public function paperProduct()
{
return $this->belongsTo('PaperProduct', 'paper_product_id');
}
$coinTransaction = CoinTransaction::with('paperTransaction.paperProduct')->get();
现在,您可以使用如下内容查询关系:
public function paperTransaction()
{
return $this->hasOne('PaperTransaction', 'paper_transaction_id');
}
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