如何在Laravel Eloquent模型中加入三个表。我的表结构就像。使用raw(带有左连接的mysql)查询很容易获得所需的结果,但是可以通过Eloquent获取。
AppDelegate
id
title
name
id
customer_id
从小时模型我想获得客户详细信息和订单详情。现在我可以获得如下订单详情。
id
order_id
如何获取客户详细信息?
我尝试过如下,但没有成功
public function order()
{
return $this->belongsTo('App\Models\Order', 'order_id', 'id');
}
编辑1:
1.return $this->hasManyThrough('App\Models\Customer','App\Models\Order','customer_id','id');
2. return $this->hasManyThrough('App\Models\Customer','App\Models\Order','customer_id','order_id');
答案 0 :(得分:1)
hasManyThrough 与您尝试实现的目标相反。它可以让您轻松地从客户模型中获得小时模型。
为了获得您需要的东西,您需要定义另一种方式的关系 - 从小时到订单再到客户。将以下关系添加到模型中:
FLAG_UPDATE_CURRENT
通过这些关系,您应该可以使用 $ hour->订单和客户数据访问订单数据 $小时 - >命令 - >客户强>
要记住的一件事:Eloquent提供了急切加载相关数据以避免其他查询的可能性。当您一次获取多个小时记录时,这样做是有意义的。您可以使用以下相关订单和客户数据加载所有小时记录:
class Hour extends Model {
public function order() {
return $this->belongsTo('App\Models\Order');
}
}
class Order extends Model {
public function customer() {
return $this->belongsTo('App\Models\Customer');
}
}