Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 Codeigniter跟随系统:选择所有状态类型_Php_Codeigniter - Fatal编程技术网

Php Codeigniter跟随系统:选择所有状态类型

Php Codeigniter跟随系统:选择所有状态类型,php,codeigniter,Php,Codeigniter,我有一个跟踪系统,可以让你跟踪特定类型的状态。当你跟随某人时,它会将你的用户id和朋友的id一起放入朋友表。最后,它会添加你想要跟随的状态类型。因此,如果用户只想查看我的状态,而不想查看照片,那么状态的类型将=1。statuses表中也有这个类型,所以这个查询可以很好地处理这个问题,但是如果类型等于零,我希望它选择所有的状态类型,那么我该怎么做呢 $this->db->select('statuses.type,statuses.text,statuses.media_url,sta

我有一个跟踪系统,可以让你跟踪特定类型的状态。当你跟随某人时,它会将你的用户id和朋友的id一起放入朋友表。最后,它会添加你想要跟随的状态类型。因此,如果用户只想查看我的状态,而不想查看照片,那么状态的类型将=1。statuses表中也有这个类型,所以这个查询可以很好地处理这个问题,但是如果类型等于零,我希望它选择所有的状态类型,那么我该怎么做呢

$this->db->select('statuses.type,statuses.text,statuses.media_url,statuses.user_id,statuses.id,users.name,users.username,users.avatar');
$this->db->from('statuses');
$this->db->join('friends', 'friends.type = statuses.type AND friends.friend_id = statuses.user_id OR friends.user_id = statuses.user_id');
$this->db->join('users', 'users.id = statuses.user_id');
$this->db->where('friends.user_id', $user_id);
$this->db->where('friends.confirmed', 1);
当friends.type等于1时,将在状态表中选择statuses types=to 1。如果其他类型的状态(如照片或视频)的类型为2或3,则此选项有效。就像我说的,如果friends.type=0,我只需要一种方法来选择所有状态类型。

可能是这样吗?:

$this->db->join('friends', '(friends.type = 0 OR friends.type = statuses.type) AND (friends.friend_id = statuses.user_id OR friends.user_id = statuses.user_id)');

否,因为如果type=0,则需要选择所有状态类型,如果statuses.type中的type=1,2,3,4,5,则无论发生什么情况,都应选择all。这也会导致错误。
条件的目的是在您的加入中
friends.type=statuses.type
时跳过对
friends.type=0
的处理,这将按类型筛选出状态。另外,我认为取决于你是如何设置的,CodeIgniter可能会被parens阻塞。但为什么我会出错呢?CI似乎不喜欢括号。如果我更改为:“friends.type=0或friends.type=statuses.type friends.friends\u id=statuses.user\u id或friends.user\u id=statuses.user\u id”我在子句“CI的活动记录是…”中获得“未知列”0“。。。特别的。它将0视为联接中的一列,并在构造查询时对其进行转义。如果您使用的数据库允许,请尝试在0周围加引号。否则,您可能必须检查DB_驱动程序中的_protect_标识符(或其他转义函数)。