像instagram一样列出用户列表

7d7tgy0s  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(401)

请帮忙。。
我有两张table
当前用户\u id=3
用户表

|  user_id  |      email       |   name   |
-------------------------------------------
|     1     |   one@gmail.com  |  ridwan  |
|     2     |   two@gmail.com  |   budi   |
|     3     |   six@gmail.com  |  stevan  |
|     4     |   ten@gmail.com  |  agung   |

关系表[用户id和跟随者id与用户表相关]

|  relation_id  | user_id | follower_id | 
----------------------------------------- 
|       1       |    1    |      3      | 
|       2       |    2    |      3      |

我想得到用户的列表,但是如果我已经和一个用户有关系,它会给我一个状态“following”,就像instagram一样,可能是这样的

{
    user_id : 1,
    name    : ridwan,
    status  : following
},
{
    user_id : 2,
    name    : budi,
    status  : following
},
{
    user_id : 4,
    name    : agung,
    status  : not following
}

在拉雷维尔我怎么能做到?
谢谢你。。

mxg2im7a

mxg2im7a1#

谢谢你们。。最后,我使用sql case,我只是对如何获取具有“following”状态的数据感到困惑
这是密码。。

DB::table('users')->leftjoin('relationships', 'users.user_id', '=', 'relationships.user_id')->select('users.user_id','users.status as user_type','users.email','users.display_name','users.profile_image',DB::raw('(CASE WHEN relationships.follower_id = ' . $user_id . ' THEN "Following" ELSE "Not Following" END) AS status'))->orderBy('user_id','asc')->where('users.user_id','!=',$user_id)->get();
b5buobof

b5buobof2#

在你的关系模型里

public function user()
{
    return $this->belongsTo(User::class);
}

然后,在您的控制器中(您希望从中获取此列表),您只需要使用雄辩的或查询生成器来获取所需的内容(通过快速加载,总是更好):

//get all users related to your_current_user
$relations = Relation::where('follower_id', your_current_user_id)->with('user')->get();

最后,您只需按自己的意愿操作数据,例如:

foreach($relations as $relation){
    $relation->user->name; //get the name of the related user
}

看看关系吧!

相关问题