我想在Laravel中的Laravel对象集合中为每个现有元素添加新元素。我的目标是这样的,
object(Illuminate\Support\Collection)#178 (1) {
["items":protected]=>
array(10) {
[0]=>
object(stdClass)#175 (4) {
["fname"]=>
string(6) "xxx"
["lname"]=>
string(5) "xxx"
["data2"]=>
string(3) "xxx"
["callid"]=>
string(17) "xxx"
}
[1]=>
object(stdClass)#179 (4) {
["fname"]=>
string(6) "xxx"
["lname"]=>
string(5) "xxx"
["data2"]=>
string(2) "62"
["callid"]=>
string(17) "xxx"
}
}
所以我需要添加类似[" phonenumber"] => string(17)" xxx"每个街区。然后对象看起来像这样,
object(Illuminate\Support\Collection)#178 (1) {
["items":protected]=>
array(10) {
[0]=>
object(stdClass)#175 (4) {
["fname"]=>
string(6) "xxx"
["lname"]=>
string(5) "xxx"
["data2"]=>
string(3) "xxx"
["callid"]=>
string(17) "xxx"
["phonenumber"]=>
string(17) "xxx"
}
[1]=>
object(stdClass)#179 (4) {
["fname"]=>
string(6) "xxx"
["lname"]=>
string(5) "xxx"
["data2"]=>
string(2) "62"
["callid"]=>
string(17) "xxx"
["phonenumber"]=>
string(17) "xxx"
}
}
我的代码是这样的
$resultsInCalls....
foreach ($resultsInCalls as $key=>$value) {
$resultsUserNumber = DB::table('qlog')
->select('data2')
->where('event', '=', 'ENTERQUEUE')
->where('callid', '=', $value->callid)
->get();
$resultsInCalls->push('phoneNumber', $resultsUserNumber['0']->data2);
}
但是上面的代码添加了这样的东西,而不是预期的结果,
[5]=>
string(11) "phoneNumber"
[6]=>
string(11) "phoneNumber"
[7]=>
string(11) "phoneNumber"
[8]=>
string(11) "phoneNumber"
[9]=>
string(11) "phoneNumber"
如何获得预期结果。请帮忙。
答案 0 :(得分:2)
使用每个
循环集合$resultsInCalls = $resultsInCalls->each(function ($item, $key) {
$resultsUserNumber = DB::table('qlog')
->select('data2')
->where('event', '=', 'ENTERQUEUE')
->where('callid', '=', $item->callid)
->get();
$item->phoneNumber = $resultsUserNumber['0']->data2;
});
更好的方法是使用关系或联接