Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何合并同一表中的多个关系?_Php_Laravel_Eloquent_Laravel 5.1 - Fatal编程技术网

Php 如何合并同一表中的多个关系?

Php 如何合并同一表中的多个关系?,php,laravel,eloquent,laravel-5.1,Php,Laravel,Eloquent,Laravel 5.1,我想在一个模型方法中合并两个多关系。这两种关系几乎相同,唯一的区别是外键 请注意,我不能简单地对这两个关系调用查询生成器get()方法,因为我必须处理合并的关系,而不是集合,例如,我想稍后对合并的关系排序,或者对其调用->where() 下面是一个示例代码: Friend.php 我知道这很糟糕,但是。。。考虑将合并后的集合转换为这样的新查询: $collection1 = ...; $collection2 = ...; $collection = $collectio

我想在一个模型方法中合并两个多关系。这两种关系几乎相同,唯一的区别是外键

请注意,我不能简单地对这两个关系调用查询生成器
get()
方法,因为我必须处理合并的关系,而不是集合,例如,我想稍后对合并的关系排序,或者对其调用
->where()

下面是一个示例代码:

Friend.php


我知道这很糟糕,但是。。。考虑将合并后的集合转换为这样的新查询:

    $collection1 = ...;
    $collection2 = ...;
    $collection = $collection1->merge($collection2);
    $values = $collection->lists('id');
    $query = User::whereIn('id',$values)->....and continue with your queries;

根据定义,一个模型/表只有一个标识符,看起来朋友模型将有两个标识符。。。这可能吗?也许这很有帮助:@Amarnasan是的,我也发现了这个问题,但这并没有解决我的问题,因为它将两个集合合并到一个集合中,这意味着我不能再对其调用查询方法。但您打算执行哪种“查询方法”?你能举个例子吗?因为我不认为你可以在任何“hasMany”之后执行“get”。我的意思是,你不能这样做:$this->user()->get(),即使“user()”是一个标准的“hasMany”关系,因为它不会返回一个“query”对象,而是一个给定模型的对象集合。我当前得到的是
illighted\Database\query\Builder
(例如变量
$friends\u left
来自该类型)除了此解决方案会导致另一个数据库查询外,由于主键查找,性能损失不会太大。至少这是一个低工作量的解决方法。