使用 cakephp 获取名称显示在下拉列表中

2024-03-31

我想在下拉列表中显示我们所有项目负责人的姓名。

项目负责人只是公司的部分员工。

这是我的表格:

project_leaders
,----,----------------,
| id | hr_employee_id |
|----|----------------|
| 1  |  18            |
'----'----------------'

projects
,----,------,-------------------,
| id | name | project_leader_id |
|----|------|-------------------|
| 1  | cake |         1         |
'----'------'-------------------'

hr_employees
,----,------,---------,
| id | name | surname |
|----|------|---------|
| 18 | joe  | dirt    |
'----'------'---------'

我的 ProjectsController 看起来像这样:

public function add() {
    if ($this->request->is('post')) {
        $this->Project->create();
        if ($this->Project->save($this->request->data)) {
            $this->_sendProjectRequestEmail($this->Project->getLastInsertID() );
            $this->Session->setFlash(__('The project has been saved'));
            $this->redirect(array('action' => 'index'));
        } else {
            $this->Session->setFlash(__('The project could not be saved. Please, try again.'));
        }
    }
    $this->set('projectLeaders',$this->Project->ProjectLeader->find('list');
}

这仅返回项目负责人的 ID,而不返回姓名。因此,它返回 1,而不是 Joe Dirt。

我尝试过执行 $this->Project->ProjectLeader->HrEmployee->find('list') 但列出了所有员工。

我也尝试过指定字段,但它返回未知字段错误。

我究竟做错了什么?


$this->set('projectLeaders',$this->Project->ProjectLeader->find('list'));

这将仅列出来自project_leaders表,最有可能的是,因为表本身不包含名称/标题字段(蛋糕会自动选择为displayField)就像这样:

array(
    1 => 1
)

使用适当的查找

要获得有意义的项目负责人名单,您需要确保您能够加入project_leaders and hr_employees一种方法是使用可容纳的 http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html行为并简单地指定要在列表中使用哪些字段:

$projectLeaders = $this->Project->ProjectLeader->find('list', array(
    'contain' => array(
        'HrEmployee'
    ),
    'fields' => array(
        'ProjectLeader.id',
        'HrEmployee.name',
    )
));
$this->set(compact('projectLeaders'));

您的数据库结构适合您的需求吗?

拥有一个相当于说“此用户是管理员”的表可能不是最好的主意 - 如果该表更容易避免数据问题,并为您提供更简单的查询project_leaders是(仅)您的布尔字段hr_employees表和project_leader_id指向hr_employee table, not其他一些数据抽象。

当然,我不知道你的整个模式,很可能有一个单独的理由project_leaders table.

或者 - 非规范化

如果您添加名称字段project_leaders- 你不需要加入就能知道项目负责人的名字或任何有趣的事情:

alter table project_leaders add name varchar(255) after id;
update project_leaders set name = (select name from hr_employees where hr_employees.id = hr_employee_id);

通过这种方式,您可以通过一次查询/联接知道谁是相关项目负责人,而不需要进行两次联接来获取员工姓名。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 cakephp 获取名称显示在下拉列表中 的相关文章

  • 清理 php 中的句子

    标题可能听起来很奇怪 但我有点尝试设置这个 preg replace 来处理文本区域的混乱写入者 它必须 如果有感叹号 则不应连续出现另一个感叹号 如果有 则逗号胜出 并且必须是 当昏迷前有一个 空格时 应将其减少到零 该句子不能以逗号开头
  • 从多维数组中删除多个值

    我有一个来自 WordPress 的数组get posts 功能 posts array 15 0 gt object WP Post 285 24 ID gt int 253 post author gt string 1 1 post
  • Laravel - LIKE 运算符来搜索加密值

    我正在尝试在 Laravel 应用程序中实现一个搜索模块 可以按名称过滤用户 为了保护用户 name 列行在数据库上加密 我面临的问题是下面的查询总是返回 0 结果 我在搜索数据库之前对搜索输入值进行加密 patients DB selec
  • Yii 2.0 AJAX 请求的 CSRF 验证

    我有一个ajax触发从我的数据库中删除条目的函数 我需要去做CSRF验证相同 我怎样才能做到这一点 我正在发送CSRF cookie连同我的帖子请求 但是Yii 2 0不验证它 并且通过 ajax 传递的任何输入都会到达服务器 我该怎么做C
  • 在 PHP 扩展中,推荐从 std::string 返回值的方法

    我们有一个简单的 PHP 函数 其目的是调用 C 自由函数std string callLibrary std string 并返回其std string返回值 目前看起来是这样的 PHP FUNCTION call library cha
  • 致命错误:找不到类“App\PDO”

    当我尝试使用命名空间时出现此错误 I have namespace App 顶部 班级看起来像 class database function construct try this gt db new PDO lt here the err
  • PHP MySQLi 多次插入

    我想知道准备好的语句是否与具有多个值的普通 mysql query 一样工作 INSERT INTO table a b VALUES a b c d VS sql db gt prepare INSERT INTO table a b V
  • 如何在 PHPUnit 中跨多个测试模拟测试 Web 服务?

    我正在尝试使用 PHPUnit 测试 Web 服务接口类 基本上 这个类调用肥皂客户端目的 我正在尝试使用 PHPUnit 测试此类getMockFromWsdl这里描述的方法 http www phpunit de manual curr
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 带数组的双美元变量

    我正在尝试使用双美元语法访问数组的第一项 但它无法按照我想要的方式工作
  • after_or_equal 验证在 laravel 5.2 中不起作用

    我想比较 start date 和 end date 并且 end date 应等于或大于 start date 我正在使用 after or equal 验证 return Validator make data start date g
  • 如何在 symfony 4 注销中重定向到外部网址

    只是想知道 Symfony 4 中是否有一个简单的解决方案 通常用户会注销并返回主页 但是有一个页面会检查用户当前是否在另一个站点上进行了身份验证 如果这是不正确的 我有一个链接可以将用户从我的站点中注销并重定向到外部站点 我在基于 sil
  • 按索引偶数或奇数将数组拆分为两个数组

    我有这个数组 array array a b c d e f g 我想根据索引是偶数还是奇数将其分成两个数组 如下所示 odd array a c e g even array b d f 提前致谢 一种解决方案 使用匿名函数和array
  • ios 无法将图片上传到服务器

    您好 我正在尝试将图像从我的 IOS 设备上传到服务器 这是我上传图像的代码 IBAction btnUpload id sender if self imageViewGallery image nil UIAlertView Error
  • Facebook API 注销我的应用程序,但不注销 Facebook

    如何使用 Facebook 的 api 进行注销 让我退出我的应用程序 网站 但保持登录 facebook com 的状态 这让我登录正常 window fbAsyncInit function FB init appId status t
  • GhostScript PDF 合并(丢失可编辑字段)

    我正在使用 GhostScript 将 PDF 合并为一个 PDF 其中一份 PDF 具有我在 Adob e Acrobat Pro 9 中创建的文本框字段 可编辑字段 当我使用 GhostScript 合并这两个 PDF 时 我丢失了文本
  • 如何使用 facebook 用户登录我的网站?

    我想知道 facebook 如何让用户登录我们的网站 我的意思是用户需要注册到我的网站才能发表评论 我如何通过我的 php 代码检查它是否是登录用户 我听说你只能用javascript检查它是否是登录用户 感谢您的任何解释 您可以使用脸书
  • InvalidArgumentException 与 UnexpectedValueException

    我应该什么时候使用无效参数异常 http www php net manual en class invalidargumentexception php什么时候意外值异常 http www php net manual en class
  • Apache“无法初始化模块”,因为更改 PHP 配置后模块和 PHP 的 API 不匹配

    php v 给出了这个 PHP Warning PHP Startup memcache Unable to initialize module Module compiled with module API 20060613 PHP co
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc

随机推荐