在 CakePHP 2 查找方法中的 2 个字段之间进行乘法运算
Doing multiplication between 2 fields in CakePHP 2 find method
我想在我的查找操作中计算 2 个字段的乘积,并在返回的数据中包含答案。这两个字段属于2个相关模型。
2 个模型:A 和 B。A 与 B 有 belongsto 关系。
A 有字段 'val1',B 有字段 'val2'。查找操作后,我想要存储在 'A.prod'.
中的两个值的乘积
我尝试过的:
$this->A->find('all', array('fields' => array('val1', 'B.val2', '(val1*B.val2) AS prod'))
这几乎可以工作,但是将乘积放在一个新数组中,而不是 A:
(int) 0 => array(
(int) 0 => array(
'prod' => '6'
),
'A' => array(
'val1' => '3'
)
'B' => array(
'val2' => '2'
)
),
也尝试过:
$this->A->find('all', array('fields' => array('val1', 'B.val2', '(val1*B.val2) AS A.prod'))
但这会产生 MySQL 错误。
使用虚拟字段:
$this->A->virtualFields = array('prod' => 'A.val1*val2');
$this->B->virtualFields = array('val2' => 'B.val2');
$this->A->virtualFields += $this->B->virtualFields;
$this->A->find('all', array('fields' => array('prod', 'B.val2'))
这给出了错误 "Column not found: 1054 Unknown column 'val2' in 'field list'"
这应该有效:
$this->A->virtualFields = array('prod' => 'A.val1 * B.val2');
$this->A->find('all', array('fields' => array('prod'));
我想在我的查找操作中计算 2 个字段的乘积,并在返回的数据中包含答案。这两个字段属于2个相关模型。
2 个模型:A 和 B。A 与 B 有 belongsto 关系。
A 有字段 'val1',B 有字段 'val2'。查找操作后,我想要存储在 'A.prod'.
中的两个值的乘积我尝试过的:
$this->A->find('all', array('fields' => array('val1', 'B.val2', '(val1*B.val2) AS prod'))
这几乎可以工作,但是将乘积放在一个新数组中,而不是 A:
(int) 0 => array(
(int) 0 => array(
'prod' => '6'
),
'A' => array(
'val1' => '3'
)
'B' => array(
'val2' => '2'
)
),
也尝试过:
$this->A->find('all', array('fields' => array('val1', 'B.val2', '(val1*B.val2) AS A.prod'))
但这会产生 MySQL 错误。
使用虚拟字段:
$this->A->virtualFields = array('prod' => 'A.val1*val2');
$this->B->virtualFields = array('val2' => 'B.val2');
$this->A->virtualFields += $this->B->virtualFields;
$this->A->find('all', array('fields' => array('prod', 'B.val2'))
这给出了错误 "Column not found: 1054 Unknown column 'val2' in 'field list'"
这应该有效:
$this->A->virtualFields = array('prod' => 'A.val1 * B.val2');
$this->A->find('all', array('fields' => array('prod'));