Laravel Marge&Map问题

时间:2019-02-14 13:29:05

标签: php laravel collections


我要解决两种问题。

第一件事:
其中之一是使用merge将两个对象组合在一起,以消除重复的行:

PMSReservationID: "23".

寻找一种使用合并功能摆脱这三行的方法:

$lead -> foreach of $leads = Lead::all();
$tempUser = DB::table('users')
            ->select('phone','email', DB::raw('CONCAT(users.first_name, " ", users.last_name) AS name'))
            ->where('id', $lead->customer_id)
            ->first();
$lead->name = $tempUser->name;
$lead->phone = $tempUser->phone;
$lead->email = $tempUser->email;

第二件事:
我试图使用地图功能,以使选择列表的用户列表数组。它使我成为另一个数组中的一个数组,而我不知道如何摆脱它。

$lead->name = $tempUser->name;
$lead->phone = $tempUser->phone;
$lead->email = $tempUser->email;

输出:

  

数组   (       [0] =>数组           (               [1] =>邮件列表           )       [1] =>数组           (               [3] =>邮件列表2           )   )

愿望:

  

数组   (       [1] =>邮件列表       [3] =>邮件列表2   )

感谢您的帮助与支持...!

1 个答案:

答案 0 :(得分:0)

您必须改用reduce

$lists = collect($mailingLists)->reduce(function($carry, $mailingLists){
    if (!$carry[$mailingLists->id]) {
        $carry[$mailingLists->id] = $mailingLists->name;
    }
    return $carry;
}, []);

首先,您可以使用fillupdate方法(填充不会保存信息,您必须先调用save方法) 对于数据库调用,请使用pluck方法:

->where('id', $lead->customer_id)
->pluck('name', 'phone', 'email') // getting only these fields
->first();
$lead->update($tempUser); // update direcly with tempUser fields