Laravel 5.4:数据透视表

时间:2017-07-11 11:07:11

标签: php laravel laravel-5 eloquent laravel-eloquent

实际上,我的问题非常简单,但我找不到任何答案。

我正在使用Laravel雄辩,我有3张桌子:

company_types
-id
-name

document_types
-id
-name

和一个名为:

的数据透视表
company_type_document_type
-company_type_id
-document_type_id
-is_default

我已经拥有公司对象的company_type_id,而我正试图获取name的{​​{1}} 像这样:

document_type

我确定问题出在我的模型上,但问题是我真的不明白何时使用“hasMany”或“BelongsToMany”等... 另外,我认为数据透视表的名称可能存在问题,因为下划线太多

谢谢你的帮助!

1 个答案:

答案 0 :(得分:2)

由于它是多对多的,因此您应该使用wherePivot()方法。

定义关系:

public function defaultDocumentTypes()
{
    return $this->belongsToMany(DocumentType::class)->wherePivot('is_default', 1);
}

然后您可以使用以下关系获取文档类型:

$companyType = CompanyType::find($companyTypeId);
$documentTypes = $companyType->defaultDocumentTypes()->get();

在视图中显示它们:

@foreach ($documentTypes as $documentType)
    {{ $documentType->name }}
@endforeach