首页 文章

Laravel 5.4:数据透视表

提问于
浏览
2

实际上,我的问题很简单,但我找不到任何答案 .

我正在使用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 ,并且我试图像这样得到 document_typename

controller...
$document_type = CompanyTypesDocumentTypes::where('company_type_id',$company->company_type_id)->with('document_type')->where('is_default',true)->first();

view...
{{ $document_type->name }}

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

谢谢您的帮助!

1 回答

  • 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
    

相关问题