合并不同模型的集合并仅保留唯一模型

时间:2015-06-28 15:47:26

标签: php laravel laravel-5

想象一下有两个集合:$companies是公司的集合,$contacts是集合的联系人。如何将它们合并在一起并且不会丢失任何数据?

当我尝试使用merge()方法时,我松开了一些模型,因为它们似乎被键覆盖了。密钥只是数字,但由于我分别获得公司和联系人,我有类似的公司0,1,2,3密钥,然后再联系0,1,2,3联系人,因此存在冲突。

我没有找到任何“附加”方法或类似的东西

更新

我将详细描述我拥有的内容。我有一个phone模型,它代表一个表,用于保存用户的唯一电话号码。 公司有2个外键 - work_phone_idmobile_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) {
    ...
}

0 个答案:

没有答案