首页 > 解决方案 > Laravel Eloquent 连接多表

问题描述

我的雄辩加入有一些问题。我有 4 个表关系

贷款表/贷款

 loan_id | quantity | user_id
 1       |   4      |   1   .

详细贷款表/Loandetails

 loandetail_id | loan_id | inventory_id
 1             | 1       | 4          .

库存表/库存

inventory_id  | name_inventory
  4           | Keyboard     .

用户表/用户

user_id  | Name
  1      | This is my name

我想要这样的结果与雄辩的查询

{
   'loan_id' => 1,
   'inventory' => 'keyboard',
   'user' => 'This is my name',
   'quantity' => 4
 }

标签: laraveleloquent

解决方案


您需要在模型中映射以下关系。

贷款.php

public function loanDetails()
{
    return $this->hasMany(LoanDetail::class);
}

public function user()
{
    return $this->belongsTo(User::class);
}

LoanDetails.php

public function inventory()
{
    return $this->belongsTo(Inventory::class);
}

public function loan()
{
    return $this->belongsTo(Loan::class);
}

Arter,您可以这样做从数据库中查询数据,

$loan = Loan::with('loanDetails.user', 'loanDetails.inventory')->find(1);

然后得到你想要的结果,

return [
            'loan_id' => $loan->id,
            'inventory' => $loan->inventory, //this will return the full inventory object you can do  $loan->inventory->name_inventory to access attributes
            'user' => $loan->user->name,
            'quantity' => $loan->quantity 
        ]

推荐阅读