我正在尝试获取Auth用户的朋友,并通过notifs表通知他们。我有以下查询来获取Auth用户的朋友:
$usrusrmembs = DB::table('usrusrs')
->where('accepted', 1)
->where('user_id', $u_id) // $u_id is the Auth user = 4
->orwhere('friend_id', $u_id)
->pluck('friend_id', 'user_id');
usrusrs表中的每个友谊都有一行,其中Auth用户可以是user_id或friend_id,具体取决于发送/接收的朋友请求的人。
Vardump($ usrusrmembs)将为1行提供以下内容:array(1) { [5]=> int(4) }
问题是,如果$u_id
与friend_id
不匹配user_id
,则仅通知friend_id
,而不会通知user_id
。
要存储的循环:
foreach($usrusrmembs as $rec_users){
$notifs = new Notif();
$notifs->rec_uid = $rec_users;
$notifs->send_uid = $u_id;
$notifs->send_uname = $u_name;
$notifs->data_type = 9;
$notifs->data_id = $group_id;
$notifs->title = $group_title;
$notifs->save();
}
答案 0 :(得分:1)
尝试使用此循环:
foreach($usrusrmembs as $key => $val){
$rec_users = ($key == $u_id) ? $val : $key;
$notifs = new Notif();
$notifs->rec_uid = $rec_users;
$notifs->send_uid = $u_id;
$notifs->send_uname = $u_name;
$notifs->data_type = 9;
$notifs->data_id = $group_id;
$notifs->title = $group_title;
$notifs->save();
}
在两个字段中使用pluck()
,您将得到一个关联数组,其中key
为user_id,value
为friend_id。您解释了Auth user
可能在键或值中处于打开状态,并且您想通知其他用户。
因此,数组的前向循环键和值($key=>$value
部分),如果$key
为$u_id
,则选择要通知的$value
,相反选择$key
以得到通知。