我试图根据我的消息表fromContact
关系在联系人列表上创建一个数组:
$messages = Message::where('offer_id', $id)->get();
$contacts = array();
foreach($messages as $message){
$contacts[] = $message->fromContact;
}
接下来,我尝试使用$ unreadIds创建联系人地图,该$ unreadIds是消息表上其他查询的结果:
$contacts = $contacts->map(function($contact) use ($unreadIds) {
$contactUnread = $unreadIds->where('sender_id', $contact->id)->first();
$contact->unread = $contactUnread ? $contactUnread->messages_count : 0;
return $contact;
});
这是行不通的...我只收到错误消息: Call to a member function map() on array
而且我了解这一点,我不应该在数组上使用map()-因此我尝试了多种方法将其转换为对象-均失败。
例如数组循环后将联系人转换为对象
$contacts = (object)$contacts;
给出错误: "message": "Call to undefined method stdClass::map()",
也许有人知道该如何解决?
使用laravel helper收集数组,然后使用map。
$collection = collect($contacts);
$collection->map(function($contact) use ($unreadIds) {
$contactUnread = $unreadIds->where('sender_id', $contact->id)->first();
$contact->unread = $contactUnread ? $contactUnread->messages_count : 0;
return $contact;
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句