gpt4 book ai didi

cakephp - 在 CakePHP 中进行手动连接不会调用连接模型的构造函数(需要虚拟字段)

转载 作者:行者123 更新时间:2023-12-01 11:44:21 26 4
gpt4 key购买 nike

我正在尝试通过一组连接表构建动态查询。这些生成动态别名以避免冲突(非唯一别名)。

但是,在我的联接表中 - 我有一些未处理的 virtualFields。经过进一步检查,似乎未调用连接表 __construct() 函数。

有没有办法在 CakePHP v2.2.8 的连接表上获取 virtualFields

谢谢

最佳答案

手动连接使用您的模型

手动连接不使用您的模型。使用手动联接,您手动定义联接并为其指定别名。尽管此别名可能与现有模型相同,但 CakePHP 不会将您的模型用于连接表。

如果您需要 virtualFields,根据使用的“什么”数据,您可以将 virtualField 移动到您正在查询的“主”模型,例如:

$this->Foo->virtualFields['foobar'] = 'CONCAT(\'Hello \', Bar.name)';

$foo = $this->Foo->find(
'all',
array(
'fields' => array(
'Foo.name',
'Foo.foobar',
),
'joins' => array(
array(
'table' => 'bars',
'alias' => 'Bar',
'type' => 'INNER',
'conditions' => array(
'Bar.id = Foo.bar_id',
)
)
),
'recursive' => -1
)
);
debug($foo);

返回;

array(
(int) 0 => array(
'Foo' => array(
'title' => 'Foo One',
'foobar' => 'Hello World'
)
),
(int) 1 => array(
'Foo' => array(
'title' => 'Foo Two',
'foobar' => 'Hello Planet'
)
),
)

关于cakephp - 在 CakePHP 中进行手动连接不会调用连接模型的构造函数(需要虚拟字段),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16767082/

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