gpt4 book ai didi

mysql - 如何显示与登录用户关联的行

转载 作者:行者123 更新时间:2023-11-28 23:10:54 26 4
gpt4 key购买 nike

刚开始学习cakephp3,有什么不对的地方还请见谅。所以我有三个表,分别称为用户、项目和事件,所以它们之间的关系就像一个用户可以有多个项目,一个项目可以有多个事件。

如果我访问基本的url

testap/events

我只希望那些事件出现在属于登录用户的列表中。注意:Event表只有project id没有user id,project表有user id。

考虑以下场景

项目表

ID User_id
1 1
2 1
3 2
4 3

事件表

ID Project_id
1 1
2 1
3 1
4 2
5 2
6 3
7 4

所以我只想显示事件 1 到 5,因为它们属于已登录用户(假设 ID 为 1 的用户已登录)

请告诉我怎样才能做到这一点?

提前致谢

最佳答案

新的 cake 3 orm 非常适合这样的事情。

// You can replace $this->Users with TableRegistry::get('users') 
// if not in the users controller
$user = $this->Users->find($this->Auth->user('id'), [
'contain' => [
'Projects.Events'
]
]);

你可以这样获取你的事件

$user->projects[0]->events;

或者,如果您想要获取特定用户的事件,您可以向后执行

$events = $this->Events->find()->matching('Projects.Users', function ($query) use ($userId) {
return $query->where(['user_id' => $userId]);
});

我假设您已经在 UsersTable 初始化函数中定义了

$this->hasMany('Projects');

在您的 ProjectsTable 中

$this->hasMany('Events');
$this->belongsTo('Users');

在你的事件表中

$this->belongsTo('Projects');

关于mysql - 如何显示与登录用户关联的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45984635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com