gpt4 book ai didi

database - Zend 多对多关系

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:59 26 4
gpt4 key购买 nike

我想从 3 个表中检索所有数据

用户、属性和 users_properties。

所以我决定使用 manytomanyRowset。但令我惊讶的是,我从 properties 和 users_properties 表中获取了数据,但没有从 users 表中获取数据。这是为什么?我需要用户表中的一些列,有没有办法告诉 manytomanyrowset 函数我也需要当前表中的数据?

这是我的任务

public function fetchRegisteredProperties()
{

$userTable = $this->getTable();
require_once APPLICATION_PATH . '/models/DbTable/UsersPropertiesDB.php';
require_once APPLICATION_PATH . '/models/DbTable/PropertiesDB.php';

$propertiesRowset = $table->fetchAll();
$allProperties = array();

foreach ($propertiesRowset as $row) {
$propertiesRowset = $row->findManyToManyRowset(
'Model_DbTable_Properties','Model_DbTable_UsersProperties');
$allProperties = array_merge($tempArray,$propertiesRowset->toArray());
}

return $allProperties;
}

提前致谢

最佳答案

我在 Zend Framework 中设计和编写了表关系功能。

您的问题的答案是否定的,findManyToManyRowset() 方法仅从相关表中获取行,不会将它们合并到相应的 Row 对象中。原因是 ZF 中的 Row 对象可以save() 本身返回到数据库,如果您添加字段,它将不知道如何处理它们。

因此,您应该实现一个自定义 Row 对象来保存用户字段和用户属性集合——将用户属性存储为 Rowset 对象。

然后扩展 __get()__set() 以便它知道在您读取或写入对象属性时如何将字段映射到正确的数组中。也就是说,如果有人试图读取或写入不属于用户行的字段,它将回退到用户属性行集。

同时扩展 save() 不仅可以保存当前行,还可以在用户属性的 Rowset 上调用 save()

关于database - Zend 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1036450/

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