Laravel 的模型关联只能在单链接中执行吗?
我这里有这么个逻辑,数据库连接1中的一个order
对应多个orderGoods
,而这里orderGoods
需要去另一个服务器上的数据库(数据库连接2)中的goods
表获取信息,所以定义了两个数据库连接:
#数据库连接1
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=one
DB_USERNAME=root
DB_PASSWORD=root
# 数据库连接2
DB2_CONNECTION=mysql_two
DB2_HOST=(另一个服务器的IP,此处省略)
DB2_PORT=3306
DB2_DATABASE=another
DB2_USERNAME=root
DB2_PASSWORD=root
然后在模型Order
里边定义了一个远程关联hasManyThrough
,like this:
public function actualPrice()
{
return $this->hasManyThrough('App\Models\Goods', 'App\Models\OrderGoods', 'trade_id', 'goods_sn', 'trade_id','goods_no');
}
于是,执行该关联后,总是会报出连接数据库连接2的order_goods
(此处默认OrderGoods
模型对应的表就是order_goods
)表不存在,而该表是在数据库连接1中的,做这个连接只是为了拿到数据库连接2中的goods
表中的数据。Google上查阅资料后,看到有回答说这些关联只能在同一连接上工作。那么我的问题是:
是这样的吗?为什么呢?原理如何?
推荐文章: