如何连接已被另一个表连接的表

问题描述 投票:0回答:2

我有3个表格(产品,产品详细信息,贷款报告)。

我想在贷款报告表中显示产品类别。产品表与产品明细表具有一对多关系,产品详细表与贷方报告表具有一对多关系。

产品

id
product_categories

产品详细信息

id
product_name

贷款报告

id
date
amount

我已使用此代码显示它,

$data = DB::table('loan_reports')
            ->join('product_details', 'loan_reports.product_details_id', '=', 'product_details.id')
            ->join('products', 'product_details.products_id', '=', 'products.id')
            ->get();

我想用雄辩的orm来做,但是总是会出错。请帮助我!

我要显示的列大致是这样

| date | product_categories | product_name | amount |

我得到的错误如下:

试图获取非对象的属性'product_name'

php mysql laravel
2个回答
0
投票

您可能想要检查“有很多通过”的关系:

https://laravel.com/docs/5.8/eloquent-relationships#has-many-through


0
投票

在ProductDetails模型中,创建关系。

 public function product_info()
 {
   return  $this->belongsTo('App\Models\Product','id','products_id');
 }
 public function loan_reports()
 {
   return  $this->hasOne('App\Models\LoanReports','product_details_id','id');
 }

使用检索结果

 $product_details = ProductDetails::get(); 
 foreach($product_details as $product_details)
 {
   echo $product_details->product_categories;
   if(isset($product_details->product_info))
   {
     echo $product_details->product_info->product_name;
   }
   if(isset($product_details->loan_reports))
   {
     echo $product_details->loan_reports->date;
     echo $product_details->loan_reports->amount;
   }
 }
© www.soinside.com 2019 - 2024. All rights reserved.