Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 需要获取登录用户作为对象跟踪的所有用户_Php_Sql_Database_Model View Controller - Fatal编程技术网

Php 需要获取登录用户作为对象跟踪的所有用户

Php 需要获取登录用户作为对象跟踪的所有用户,php,sql,database,model-view-controller,Php,Sql,Database,Model View Controller,我正在构建手工制作的MVC框架,我想实现Twitter这样的跟踪系统,这样登录的用户可以跟踪另一个用户,当该用户访问他的个人资料时,他可以看到他跟踪的所有其他用户,反之亦然。我不确定要应用哪个查询来获取当前登录用户正在跟踪的所有用户。我尝试了几个sql查询,以便将这些追随者作为对象获取,但失败了。此外,您还有表用户和下面的内容及其说明 这是用户表 下面是一个表,该表具有复合主键user\u id、后跟user\u id,它们都是指向表用户的列id的外键 下面是下表中的一些数据 我已经尝试过了,但

我正在构建手工制作的MVC框架,我想实现Twitter这样的跟踪系统,这样登录的用户可以跟踪另一个用户,当该用户访问他的个人资料时,他可以看到他跟踪的所有其他用户,反之亦然。我不确定要应用哪个查询来获取当前登录用户正在跟踪的所有用户。我尝试了几个sql查询,以便将这些追随者作为对象获取,但失败了。此外,您还有表用户和下面的内容及其说明

这是用户表

下面是一个表,该表具有复合主键user\u id、后跟user\u id,它们都是指向表用户的列id的外键

下面是下表中的一些数据

我已经尝试过了,但它将每个用户作为一个数组进行抓取


从follows.user\u id=users.id上的follows内部加入用户中选择users.id、users.username

假设您有这两个表:

CREATE TABLE `user`
(
    `user_id` int AUTO_INCREMENT,
    `name` varChar(255),
    PRIMARY KEY (`user_id`)
);

CREATE table `user_following`
(
    `user_id` int,
    `following_user_id` int,
    PRIMARY KEY (`user_id`, `following_user_id`),
    CONSTRAINT FOREIGN KEY (`user_id`) REFERENCES `user` (`user_id`),
    CONSTRAINT FOREIGN KEY (`following_user_id`) REFERENCES `user` (`user_id`)
);

使用这些值:

在'user'值1'中插入'Alice'; 在'user'值2'中插入'Bob'; 在'user'值中插入3个'Charlie'; 在“user_”中插入以下值1、2; 通过运行以下命令,可以找到Alice user id=1的所有用户:

选择 * 从…起 `使用者` 哪里 `用户id` 在里面 从'user\u following'中选择'following\u user\u id',其中'user\u id`=1;
只需将数组转换为您自己的自定义对象,或者让它为您获取一个stdClass,或者指定一个类作为第一个参数。MySQL不知道对象,这取决于您的代码。@ChrisHaas我知道,但我不确定要应用哪个查询来获取当前登录用户所遵循的所有用户。您提供的架构中没有显示任何关于登录的信息。如果您还没有这样做,您将需要构建它。您的代码需要每隔x个时间单位(秒、分钟等)对服务器/数据库执行ping操作,以便每个用户都能说我还在,除非您想相信每个用户都会真正注销,而他们不会。一种方法是让一个额外的列用户最后一次看到,并让pinger更新该列。然后,您的查询可以说“给我所有在过去5分钟内见过的用户”或类似的内容。follow与friends类似,只是接受/拒绝/挂起状态不同,因此可能应该有任意的profile_a和profile_b列,然后您可以在profile_a=?然后profile_b ELSE profile_a END AS profile_id,其中profile_a=?或者profile_b=?,并传入登录id,因为在某一点上,您还希望查询您正在查看的当前配置文件所遵循的不是您或您的某人following@ChrisHaas我已经把一切都安排好了。这不是问题,问题是我想向所有用户显示,例如id=1的用户登录了,他现在跟踪id=4的用户。当我访问id=1的登录用户1的配置文件时,我想显示一个包含他跟踪的所有用户的表,它应该显示id=4的用户的用户名