Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel-链连接有一个->;属于雄辩的关系_Laravel_Laravel 4_Eloquent - Fatal编程技术网

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