想象一下有两个集合:$companies
是公司的集合,$contacts
是集合的联系人。如何将它们合并在一起并且不会丢失任何数据?
当我尝试使用merge()
方法时,我松开了一些模型,因为它们似乎被键覆盖了。密钥只是数字,但由于我分别获得公司和联系人,我有类似的公司0,1,2,3
密钥,然后再联系0,1,2,3
联系人,因此存在冲突。
我没有找到任何“附加”方法或类似的东西
更新
我将详细描述我拥有的内容。我有一个phone
模型,它代表一个表,用于保存用户的唯一电话号码。
公司有2个外键 - work_phone_id
和mobile_phone_id
,它们与电话表相关联。联系方式相同。公司和联系人都有2个基于work_phone_id和contact_phone_id的关系。
所以,company
有2个关系:
/**
* Company has a work phone.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function workPhone()
{
return $this->belongsTo('App\EloquentModels\Phone', 'work_phone_id');
}
/**
* Company has a mobile phone.
*
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function mobilePhone()
{
return $this->belongsTo('App\EloquentModels\Phone', 'mobile_phone_id');
}
对于联系人也一样。
我需要获取特定手机的所有相关实体并循环播放它们。循环时我还需要访问公司/联系人关系。结果将是:
$companiesAndContacts = $this->phone->getRelatedCompaniesAndContacts($phoneId);
foreach ($companiesAndContacts as $entity) {
...
}