gpt4 book ai didi

php - 访问cake php中的复合表数据

转载 作者:行者123 更新时间:2023-11-29 21:31:12 25 4
gpt4 key购买 nike

编辑:我的问题可能过于复杂,让我们简化一下。如何从不同的 Controller 和表导入/调用表。例如。我如何从 ProjectsController 调用 UsersTable?

如果我想访问和处理使用组合键将两个不同表连接在一起的表的数据,我应该如何执行此操作?

作为示例,我有项目和用户以及一个名为 ProjectsUsers 的表,该表跟踪两者的关系(哪些用户已分配给哪个项目以及他们在该项目中的角色)。使用复合键,我可以轻松地烘焙脚手架代码以进行添加和编辑,让我在创建项目时将用户分配给项目,但这并不能让我访问表中的角色变量。

我认为我应该为 ProjectsUsers 制作一个模型(我使用烘焙来做),然后在 ProjectsUsersTable 中制作函数来检查给定用户是否有权访问他们试图访问的任何内容。

ProjectsTable 方法 isOwnedBy(如下)工作正常,因此我尝试为我的复合表复制它,但没有成功。

项目 Controller :

use App\Controller\AppController;
use App\Model\Table\ProjectsUsers;

class ProjectsController extends AppController
{

//Individual access rules to projects functions (projects/*).
public function isAuthorized($user)
{
// All registered users can add projects.
if ($this->request->action === 'add'){
return true;
}

// Check from the ProjectsUsers table if the person trying to access
// is a moderator of that project.
if ($this->request->action === 'edit'){
$projectId = (int)$this->request->params['pass'][0];
if ($this->ProjectsUsers->isModeratedBy($projectId, $user['id']))
{ return true;
}
}

// The owner of an article can edit and delete it.
if (in_array($this->request->action, ['edit', 'delete'])){
$projectId = (int)$this->request->params['pass'][0];
if ($this->Projects->isOwnedBy($projectId, $user['id'])){
return true;
}
}

return parent::isAuthorized($user);
}

}

项目表(工作正常):

class ProjectsTable extends Table
{

public function isOwnedBy($projectId, $userId)
{
return $this->exists(['id' => $projectId, 'user_id' => $userId]);
}

}

项目用户表:

class ProjectsUsersTable extends Table
{


public function isModeratedBy($projectId, $userId)
{
return true;
}

}

但是我收到错误:

Call to a member function isModeratedBy() on boolean

编辑:我的问题可能过于复杂,让我们简化一下。如何从不同的 Controller 和表导入/调用表。例如。我如何从 ProjectsController 调用 UsersTable?

最佳答案

我以为我已经尝试过这个,所以我困惑了一段时间,但正确的方法是:

use Cake\ORM\TableRegistry;

$articles = TableRegistry::get('Articles');

关于php - 访问cake php中的复合表数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35251887/

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