Laravel 5.4:枢轴 table
Laravel 5.4: Pivot table
其实我的问题很简单,但是找不到答案。
我正在使用 Laravel eloquent,我有 3 个 table:
company_types
-id
-name
document_types
-id
-name
和一个枢轴 table 称为:
company_type_document_type
-company_type_id
-document_type_id
-is_default
我已经从我的公司对象中获得 company_type_id
,我正在尝试获取 document_type
的 name
像这样:
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" 等...
另外,我认为枢轴的名称table可能有问题,因为下划线
太多了
感谢您的帮助!
因为是多对多,你应该使用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
其实我的问题很简单,但是找不到答案。
我正在使用 Laravel eloquent,我有 3 个 table:
company_types
-id
-name
document_types
-id
-name
和一个枢轴 table 称为:
company_type_document_type
-company_type_id
-document_type_id
-is_default
我已经从我的公司对象中获得 company_type_id
,我正在尝试获取 document_type
的 name
像这样:
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" 等... 另外,我认为枢轴的名称table可能有问题,因为下划线
太多了感谢您的帮助!
因为是多对多,你应该使用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