【发布时间】:2019-08-26 23:28:35
【问题描述】:
我正在尝试在 Laravel 上构建一个应用程序,其中我有以下模型:
type
id - integer
name - string
companies
id - integer
name - string
type_id - integer
contacts
id - integer
name - string
company_contact
contact_id - integer
company_id - integer
Contact 到 Company 具有 many to many 关系,company_contact 作为表名,Company 到 Type 是 belongsTo 关系。
我遇到一种情况,我想根据类型计算公司的数量,也与按类型的联系人相同。所以在类型模型中我做了这样的事情:
class Type extends Model {
public function companies()
{
return $this->hasMany('App\Company', 'type_id', 'id');
}
}
在控制器中我可以简单地做:
$types = Type::withCount('companies')
但如果是联系人,我尝试使用hasManyTrough 关系:
public function contacts()
{
return $this->hasManyThrough('App\Contact', 'App\Company');
}
但没有按预期工作,根据文档,它 Contact 和 Company 应该具有 has Many 关系才能执行此操作,但我有 many to many 关系。
【问题讨论】:
-
你试过这个
https://laravel.com/docs/master/eloquent-relationships#many-to-many -
@DhavalPurohit 我认为在这种情况下多对多关系不会起作用。
-
也许你想要
withPivot()代替?此处示例:stackoverflow.com/a/24995024/3585500 和