gpt4 book ai didi

zend-framework - Zend Framework 关系 - 在 findManyToManyRowset() 中定义列名?

转载 作者:行者123 更新时间:2023-12-04 07:03:42 26 4
gpt4 key购买 nike

我正在开发使用 Zend Framework 开发的应用程序。我已经在模型中定义了关系,并且可以愉快地使用它们,例如:

$rowset = $row->findManyToManyRowset('People', 'Jobs');

但是,我遇到了一个问题,即返回的行集在“人员”和“工作”中具有相同的列名,因此合并了数组键,从而丢失了最终行集中的一些数据。

我知道我可以通过 Zend_Db_Select反对 findManyToManyRowset()作为参数之一,但找不到任何说明在这种情况下如何使用它的文档,例如:
$select = $this->select()->from(array(
'p' => 'people',
'j' => 'jobs'
),
array(
'person_id' => 'p.id',
'job_id' => 'j.id',
'person_code' => 'p.code',
'job_code' => 'j.code'
)
);

如果我尝试使用上面的代码,我会收到一条消息,例如:
Error: No reference rule "" from table People to table Jobs

任何人都可以启发我应该如何做到这一点?我知道我可以更改数据库中的列名,但我更喜欢更改代码,而不是重新设计我的数据库结构并更新所有相关代码。

注意:如果没有上述某种形式的列别名,返回的行集看起来像这样(即,它合并了具有相同名称的列):
[_data:protected] => Array
(
[id] => 1
[code] => SX342
)

干杯,
马特

最佳答案

我的第一个建议是,您不应该将列命名为诸如 id 之类的通用名称。和 code .这些名称毫无意义,正如您所发现的,当您在关联数组中获取结果时,它们也会导致冲突。

您还错误地使用了 Select 界面。您应该为每个 from() 仅指定一张表调用或join()称呼。

最后,我从不尝试通过 Zend_Db_Table 进行复杂的查询。关系界面。它仅适用于简单的情况。如果您有更复杂的查询,只需显式编写 SQL 查询即可。

另见 How to do a joined query in the ZF tables interface?

关于zend-framework - Zend Framework 关系 - 在 findManyToManyRowset() 中定义列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438721/

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