【发布时间】:2019-08-02 19:15:56
【问题描述】:
我有以下查询将带来所有 Auth 用户朋友:
$usrusrmembs = DB::table('usrusrs')
->where('accepted', 1)
->where('user_id', $u_id)
->orwhere('friend_id', $u_id)
->pluck('friend_id', 'user_id');
接下来是一个foreach循环从上面的查询接收到的id,获取所有id的posts,然后将结果发送到刀片:
foreach($usrusrmembs as $key => $val){
$rec_users = ($key == $u_id) ? $val : $key;
$f_usrs_psts = DB::table('posts')
->where('posts.user_id', $rec_users)
->get();
}
return view('updates', ['f_posts' => $f_usrs_psts] );
刀片中的输出仅显示一个朋友的帖子,而忽略其他人。我觉得帖子查询中存在问题,它只向刀片发送最后处理的 ID。如果是这个问题,那我该如何解决呢?
【问题讨论】:
-
作为一般经验法则,您希望避免在循环中执行查询。例如,如果
$usrusrmembs包含 1000 个值,则您正在对数据库进行 1000 次调用。我会重新处理您的初始查询,以便在一次调用中获得您需要的所有结果。另外,你在哪里定义了$f_usrs_psts? -
您只得到 1 个结果,因为您覆盖了 foreach 循环中的
$f_usrs_psts变量。