Cakephp复杂查询隐私

时间:2014-02-18 12:13:17

标签: php mysql cakephp

我想用分页创建一个复杂的查询。这是我的查询方案,请帮我创建

Friends table 
id | user_id | friend_id
1    2         3
2    4         2
3    5         1

朋友ID属于用户表ID。 user_id也属于用户表id。 朋友表这么多关系保存了这么多用户

user table
id name 
1  jaskaran
2  kaka
3  rajal
4  name
5  john

projects 
id user_id title privacy
1  2       abc1  1
2  2       abc2  2
3  2       abc3  3
4  2       abc3  4 

privacy 1 public
privacy 2 private
privacy 3 only selected friend
privacy 4 all friend only

proect_selected_friends

project_id | user_id
3          | 3

现在,当用户搜索title =“%abc%”的项目现在显示所有记录时,我想在那里应用条件隐私

1 project display all the user
2 project display no one
3,4,1 project display, which has user_id 3 
4,1 project display to 3 or 4 

请帮帮我

1 个答案:

答案 0 :(得分:0)

您可以开始阅读有关检索数据的信息:http://book.cakephp.org/2.0/en/models/retrieving-your-data.html。 例子:

$posts = $this->Project->find('all', array(
    'conditions' => array(
        'Project.user_id' => $user_id
    )
));

它意味着:查找属于一个ID为Project的用户的模型projects(db table $user_id)的所有帖子(所有项目)。其中user_id是db table users的外键(模型User)。

$post = $this->Project->find('first', array(
    'conditions' => array(
        'Project.id' => $project_id
    )
));

它的意思是:从模型Project(db表:projects)中找到id = $project_id的第一个帖子(第一个项目)。您必须在/app/Controller/ProjectsController.php

中将此内容写入您的函数

通过分页,它将像:

        $this->paginate = array('all', 
            'conditions' => array(
                'Project.id' => $project_id
            ),
            'limit' => 6,
        );
       $posts = $this->paginate($this->Project);

如果你需要更复杂的查询示例,请写下来。