我正在laravel 5.4
建立一个小型应用程序,我正在寻找以下模型和关系:
互动模式:
public function contactsAssociation()
{
return $this->belongsToMany('App\Contact', 'contact_interaction', 'interaction_id', 'contact_id')->withPivot('company_id')->withTimestamps();
}
联系模式:
public function company()
{
return $this
->belongsToMany('App\Company', 'company_contact','contact_id', 'company_id')->withTimestamps();
}
和公司型号:
public function contacts()
{
return $this->belongsToMany('App\Contact', 'company_contact', 'company_id','contact_id');
}
现在我正在获取这样的数据:
$tempData['contacts'] = $interaction->contactsAssociation()->with('company')->get();
我想从关系中提到的数据透视表中提取公司数据。目前我找不到解决方案,所以我必须这样做:
$tempData['contacts'] = $interaction->contactsAssociation()->get();
$companies = [];
foreach($tempData['contacts'] as $contact)
{
$companies[] = Company::find($contact->pivot->company_id);
}
$tempData['company'] = $companies;
指导我,谢谢,
答案 0 :(得分:0)
您可以使用要检索的每个字段将数组传递给withPivot()
函数:
public function contactsAssociation()
{
return $this->belongsToMany('App\Contact', 'contact_interaction', 'interaction_id', 'contact_id')
->withPivot(['company_id', 'other_field'])
->withTimestamps();
}
希望这会对你有所帮助。