Laravel Eloquent 来自多个 Table 的预加载
Laravel Eloquent Eager Load from Multiple Table
我是 Laravel 的新手,最近才开始学习预先加载。
目前,我有一个项目,我需要开发一个应用程序来连接公司和合作伙伴。
连接可以是公司-公司、合作伙伴-合作伙伴或公司-合作伙伴之间的连接。现在,我将所有连接存储在一个 Connection table 中,如图 here:
在 Connection class 中,我使用多态检索 company/partner:
的所有连接
public function connectable()
{
return $this->morphTo();
}
并且 Partner 和 Company classes:
中的此函数
public function my_connection()
{
return $this->morphMany(Connection::class, 'connectable', 'model_type', 'model_id');
}
我可以很好地检索连接列表,但是当我想获取每个连接的详细信息时出现问题 company/partner。我想在 Connection class 中使用预加载,如下所示,但它只能设法从公司或合作伙伴那里获得,但不能同时从两者那里获得
protected $with = [
'following'
];
public function following()
{
return $this->belongsTo(Company::class, 'connect_to', 'id');
}
这可以吗?或者我应该将公司和合作伙伴的联系分成不同的 table 吗?
编辑:通过连接,我的意思是合作伙伴或公司可以像通常的社交媒体应用程序一样connect/follow彼此。这不是相互的。比如说,如果合作伙伴 A 关注合作伙伴 B,则只会存储该连接。合作伙伴 B 仍被视为未连接到 A。
我不确定你想要预加载哪个模型(即 model_type
或 connect_type
),但在任何一种情况下你都可以使用 morphTo
关系,如:
public function following()
{
return $this->morphTo(null, $type = 'connect_type', $id = 'connect_to');
}
我是 Laravel 的新手,最近才开始学习预先加载。 目前,我有一个项目,我需要开发一个应用程序来连接公司和合作伙伴。
连接可以是公司-公司、合作伙伴-合作伙伴或公司-合作伙伴之间的连接。现在,我将所有连接存储在一个 Connection table 中,如图 here:
在 Connection class 中,我使用多态检索 company/partner:
的所有连接public function connectable()
{
return $this->morphTo();
}
并且 Partner 和 Company classes:
中的此函数public function my_connection()
{
return $this->morphMany(Connection::class, 'connectable', 'model_type', 'model_id');
}
我可以很好地检索连接列表,但是当我想获取每个连接的详细信息时出现问题 company/partner。我想在 Connection class 中使用预加载,如下所示,但它只能设法从公司或合作伙伴那里获得,但不能同时从两者那里获得
protected $with = [
'following'
];
public function following()
{
return $this->belongsTo(Company::class, 'connect_to', 'id');
}
这可以吗?或者我应该将公司和合作伙伴的联系分成不同的 table 吗?
编辑:通过连接,我的意思是合作伙伴或公司可以像通常的社交媒体应用程序一样connect/follow彼此。这不是相互的。比如说,如果合作伙伴 A 关注合作伙伴 B,则只会存储该连接。合作伙伴 B 仍被视为未连接到 A。
我不确定你想要预加载哪个模型(即 model_type
或 connect_type
),但在任何一种情况下你都可以使用 morphTo
关系,如:
public function following()
{
return $this->morphTo(null, $type = 'connect_type', $id = 'connect_to');
}