Php getparent和getChildren的函数
这些getParent()和getChildren()做什么?这一切都和数据库中的父子表关系有关吗?如果是这样的话,我应该在Zend_模型或Zend_Db_表中将这些-parent_type和parent_id放在哪里Php getparent和getChildren的函数,php,socialengine,Php,Socialengine,这些getParent()和getChildren()做什么?这一切都和数据库中的父子表关系有关吗?如果是这样的话,我应该在Zend_模型或Zend_Db_表中将这些-parent_type和parent_id放在哪里 如何在控制器中调用getParent()/getChildren(),以及它们将返回什么 我可以对表关系使用Zend normal约定吗 1) 是的,它们用于父子关系,但不是通过Zend本机机制(\u Dependentables、\u referenceMap等) 您可以在这里
3) 您可以尝试,但这可能会很棘手,因为SE与Zend framework代码库相比变化很大。我已经找到了答案。我发现
getParent()
和getChildren()
返回核心模型项目摘要。但必须分别在子表模型和父表模型中(不在\u model\u dbtable中)设置$\u parent\u type
和$\u children\u types[array]
)
您还必须在子表模型(\u model\u DbTable)
中创建一个getChildrenSelectOfItemType($obj,$params=array()
,它返回一个Zend\u Db\u Select
,您必须定义此Select将返回的内容
这里SE中的ItemType
表示moduleName\u itemname
(例如相册照片)
假设account和bugs具有1:n关系,因此MyModule_Model_DbTable_bugs中必须包含以下内容
public function getChildrenSelectOfMyModuleAccount($obj,$params = array())
{
$select = $this->select();
$select ->where('account_id = ?', $obj->getIdentity());
return $select;
}
}
然后您可以通过(在控制器中)获取相关子级
$account=Engine\u Api::xAE()->getItem('mymodule\u account',1);//1=匹配的帐户\u id
$bug=$account->getChildren('mymodule_bug');//返回核心模型项目抽象或行obj
获取父表行不太复杂,在子表中声明$\u parent\u type
,并且数据库子表中必须存在parent\u id列-bug
$bug=Engine\u Api:::()->getItem('mymodule\u bug',1);//1=bug\u id
$account=$bug->getParent();**//返回核心\模型\项目\抽象/行obj
(不要忘记在db bug表中放置一个具有匹配id的引用列(父\ id)
如果在MyModule\u Model\u Bug中设置“$\u parent\u is\u owner=true”(未声明$\u owner\u type和$\u parent\u type),则用户将成为家长,因此getParent将返回用户
要知道的一件最重要的事情是
主体、观众和所有者
在社交引擎环境中
Viewer=正在查看页面的任何人(主要是登录用户)。例如,John是正在查看照片(主题)的登录用户
主题=主题由观众查看和/或观众实际查看主题。例如,如果用户John查看相册/照片,则相册/照片为主题
所有者=所有者拥有一个物品/主题。例如,John是他的照片(主题)的所有者。如果John正在查看Jerry的照片,主题是Jerry的照片,但所有者是Jerry
$group = $photo->getParent('group');
public function getChildrenSelectOfMyModuleAccount($obj,$params = array())
{
$select = $this->select();
$select ->where('account_id = ?', $obj->getIdentity());
return $select;
}
}