gpt4 book ai didi

php - 在 cakePHP 2.x 中使用虚拟字段

转载 作者:可可西里 更新时间:2023-11-01 06:46:01 24 4
gpt4 key购买 nike

我通读了文档并努力理解要做什么。另外,我已经通读了这里关于 stackoverflow 的问题,但我尝试过的任何方法都没有帮助。

我有一个下拉列表,我想列出公司的所有员工。该列表应如下所示:

Name Surname (Job Title)

在我的模型中,我有这段代码:

public $virtualFields = array(
'fullname' => 'CONCAT(HrEmployee.name, " ", HrEmployee.surname, " (", HrEmployee.jobTitle, ")")'
);

在我的 Controller 中,我有这个:

$hrEmployees = $this->User->HrEmployee->find('fullname',
array(
'fields' => array('HrEmployee.name','HrEmployee.surname','HrEmployee.jobTitle'),
'order' => array('HrEmployee.name'=>'ASC','HrEmployee.surname'=>'ASC')
));

但是我得到这个错误:

Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS `User__fullname` FROM `intraweb_db`.`users` AS `User` WHERE `User`.`hr_emp' at line 1

我必须改变什么?我可以看到它正在构建查询,但它正在将其更改得非常糟糕...

有人可以帮忙吗?

最佳答案

很酷所以我修好了它。部分感谢 Brandon 为我指明了正确的方向。

由于虚拟字段的限制,我不得不采取解决方法。

因此,在我的 HrEmployee 模型中我这样做了:

public $virtualFields = array(
'fullname' => 'CONCAT(HrEmployee.name, " ", HrEmployee.surname, " (", HrEmployee.jobTitle, ")")'
);

在我的用户模型中,我将其更改为:

class User extends AppModel {
public function __construct($id = false, $table = null, $ds = null) {
parent::__construct($id, $table, $ds);
$this->virtualFields['fullname'] = $this->HrEmployee->virtualFields['fullname'];
}

最后,在我的 UsersController 中,我只是稍微更改了一下:

$hrEmployees = $this->User->HrEmployee->find('list',
array(
'fields' => array("id","fullname"),
'order' => array('HrEmployee.name ASC','HrEmployee.surname ASC')
));

关于php - 在 cakePHP 2.x 中使用虚拟字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630819/

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