Database Zend多对多关系
我想从3个表中检索所有数据 用户、属性和用户\属性 所以我决定使用manytomanyRowset。但令我惊讶的是,我从properties和users_properties表中获得了数据,但从users表中没有数据。为什么呢?我需要用户表中的一些列有没有办法告诉manytomanyrowset函数我也需要当前表中的数据 这是我的职责Database Zend多对多关系,database,zend-framework,many-to-many,Database,Zend Framework,Many To Many,我想从3个表中检索所有数据 用户、属性和用户\属性 所以我决定使用manytomanyRowset。但令我惊讶的是,我从properties和users_properties表中获得了数据,但从users表中没有数据。为什么呢?我需要用户表中的一些列有没有办法告诉manytomanyrowset函数我也需要当前表中的数据 这是我的职责 public function fetchRegisteredProperties() { $userTable = $this->getTabl
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框架中设计并编码了表关系功能 您的问题的答案是否定的,
findManyToManyRowset()
方法只从相关表中获取行,而不会将它们合并到相应的行对象中。原因是ZF中的行对象可以save()
自身返回数据库,如果添加字段,它将不知道如何处理这些字段
因此,您应该实现一个自定义行对象来保存用户字段和用户属性集合——将用户属性存储为行集对象
然后扩展\uuuu get()
和\uuuu set()
,以便在读取或写入对象属性时知道如何将字段映射到正确的数组中。也就是说,如果试图读取或写入不属于用户行的字段,它将返回到用户属性行集
还可以扩展
save()
,不仅保存当前行,还可以对用户属性行集调用save()
。oh ok cool很有意义。我是zend框架的新手,我习惯了cakePhp处理事情的方式。谢谢你的快速回复!