如何解决将两个不同的对象放在一起
我有 $campus_groups
来自 CampusGroup
$campus_groups = CampusGroup::where('campus_id',$campus_id)->get();
有
[
{"id":1,"campus_id":1,"group_id":1,"created_at":"2021-03-15T08:15:27.000000Z","updated_at":"2021-03-15T08:15:27.000000Z"},{"id":2,"group_id":2,"created_at":"2021-03-15T08:15:37.000000Z","updated_at":"2021-03-15T08:15:37.000000Z"},{"id":3,"group_id":5,"created_at":"2021-03-15T08:16:49.000000Z","updated_at":"2021-03-15T08:16:49.000000Z"}
]
和$campus_org_groups
来自CampusOrganizationGroup
$campus_org_groups = CampusOrganizationGroup::where('campus_id',"campus_organization_id":1,"group_id":3,"created_at":"2021-03-15T08:15:50.000000Z","updated_at":"2021-03-15T08:15:50.000000Z"},"group_id":4,"created_at":"2021-03-15T08:15:55.000000Z","updated_at":"2021-03-15T08:15:55.000000Z"},"group_id":6,"created_at":"2021-03-15T08:17:28.000000Z","updated_at":"2021-03-15T08:17:28.000000Z"}
]
并希望像这样将两者结合在一起(重要的键是 group_id
,如果 campus_organization_id
被排除在外我也可以)
[
{"id":1,"updated_at":"2021-03-15T08:16:49.000000Z"},{"id":1,"updated_at":"2021-03-15T08:17:28.000000Z"}
]
如果我merge他们
$obj_merged = $campus_groups->merge($campus_org_groups);
这就是我得到的
[
{"id":1,"updated_at":"2021-03-15T08:17:28.000000Z"}
]
如果我union他们
$obj_merged = $campus_groups->union($campus_org_groups);
这就是我得到的
[
{"id":1,"updated_at":"2021-03-15T08:16:49.000000Z"}
]
解决方法
我变了
$campus_groups = CampusGroup::where('campus_id',$campus_id)->get();
$campus_org_groups = CampusOrganizationGroup::where('campus_id',$campus_id)->get();
到
$campus_groups = collect(CampusGroup::where('campus_id',$campus_id)->get(['id','campus_id','group_id','created_at','updated_at']));
$campus_org_groups = collect(CampusOrganizationGroup::where('campus_id','updated_at']));
注意 collect()
的用法以及我真正想要的字段的规范(省略 campus_organization_id
)。然后,初始合并
$obj_merged = $campus_groups->merge($campus_org_groups);
将返回所需的输出
[
{"id":1,"campus_id":1,"group_id":1,"created_at":"2021-03-15T08:15:27.000000Z","updated_at":"2021-03-15T08:15:27.000000Z"},{"id":2,"group_id":2,"created_at":"2021-03-15T08:15:37.000000Z","updated_at":"2021-03-15T08:15:37.000000Z"},{"id":3,"group_id":5,"created_at":"2021-03-15T08:16:49.000000Z","updated_at":"2021-03-15T08:16:49.000000Z"},{"id":1,"group_id":3,"created_at":"2021-03-15T08:15:50.000000Z","updated_at":"2021-03-15T08:15:50.000000Z"},"group_id":4,"created_at":"2021-03-15T08:15:55.000000Z","updated_at":"2021-03-15T08:15:55.000000Z"},"group_id":6,"created_at":"2021-03-15T08:17:28.000000Z","updated_at":"2021-03-15T08:17:28.000000Z"}
]
,
你能测试一下这个解决方案吗:
$obj_merged = (object) array_merge((array) $campus_groups,(array) $campus_org_groups);
,
这是非常简单的操作,array_merge
应该可以工作
<?php $campus_groups = [
['id' => 1,'campus_id'=> 1,'group_id'=> 1],['id' => 2,'group_id'=> 2],['id' => 3,'group_id'=> 5],];
$campus_org_groups = [
['id' => 1,'group_id'=> 3,'campus_organization_id' => 1],'group_id'=> 4,'group_id'=> 5,];
print_r(array_merge($campus_groups,$campus_org_groups));
https://repl.it/@technoknol/StainedHealthyBlogclient
,我对 array_push
(doc) 做了一些简单的事情:
foreach($array2 as $val){
array_push($array1,$val);
}
使用以下代码测试 here:
<?php
class newObject{
public $id;
public $campus_id;
public $group_id;
public $created_at;
public $updated_at;
function create($id,$campus_id,$group_id,$created_at,$updated_at){
$this->id = $id;
$this->campus_id = $campus_id;
$this->group_id = $group_id;
$this->created_at = $created_at;
$this->updated_at = $updated_at;
}
}
class newObject2{
public $id;
public $campus_id;
public $campus_organization_id;
public $group_id;
public $created_at;
public $updated_at;
function create($id,$campus_organization_id,$updated_at){
$this->id = $id;
$this->campus_id = $campus_id;
$this->campus_organization_id = $campus_organization_id;
$this->group_id = $group_id;
$this->created_at = $created_at;
$this->updated_at = $updated_at;
}
}
$newObject = new newObject;
$newObject->create("1","1","2021-03-15T08:15:27.000000Z","2021-03-15T08:15:27.000000Z");
$newObjectA = new newObject;
$newObjectA->create("2","2021-03-15T08:15:27.000000Z");
$array1 = [$newObject,$newObjectA];
$newObject2 = new newObject2;
$newObject2->create("1","3","2021-03-15T08:15:50.000000Z","2021-03-15T08:15:50.000000Z");
$newObject2A = new newObject2;
$newObject2A->create("2","2021-03-15T08:15:50.000000Z");
$array2 = [$newObject2,$newObject2A];
foreach($array2 as $val){
array_push($array1,$val);
}
var_dump($array1);
输出最终:
array(4) {
[0]=>
object(newObject)#1 (5) {
["id"]=>
string(1) "1"
["campus_id"]=>
string(1) "1"
["group_id"]=>
string(1) "1"
["created_at"]=>
string(27) "2021-03-15T08:15:27.000000Z"
["updated_at"]=>
string(27) "2021-03-15T08:15:27.000000Z"
}
[1]=>
object(newObject)#2 (5) {
["id"]=>
string(1) "2"
["campus_id"]=>
string(1) "1"
["group_id"]=>
string(1) "1"
["created_at"]=>
string(27) "2021-03-15T08:15:27.000000Z"
["updated_at"]=>
string(27) "2021-03-15T08:15:27.000000Z"
}
[2]=>
object(newObject2)#3 (6) {
["id"]=>
string(1) "1"
["campus_id"]=>
string(1) "1"
["campus_organization_id"]=>
string(1) "1"
["group_id"]=>
string(1) "3"
["created_at"]=>
string(27) "2021-03-15T08:15:50.000000Z"
["updated_at"]=>
string(27) "2021-03-15T08:15:50.000000Z"
}
[3]=>
object(newObject2)#4 (6) {
["id"]=>
string(1) "2"
["campus_id"]=>
string(1) "1"
["campus_organization_id"]=>
string(1) "1"
["group_id"]=>
string(1) "3"
["created_at"]=>
string(27) "2021-03-15T08:15:50.000000Z"
["updated_at"]=>
string(27) "2021-03-15T08:15:50.000000Z"
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。