Orm 一对多非互惠
我对menu.cfc和menuItem.cfc的多对一/一对多关系有问题。它们都扩展了node.cfc(在末尾声明) index.cfmOrm 一对多非互惠,orm,coldfusion,coldfusion-9,Orm,Coldfusion,Coldfusion 9,我对menu.cfc和menuItem.cfc的多对一/一对多关系有问题。它们都扩展了node.cfc(在末尾声明) index.cfm <cfset oMenu = entityNew( "menu" )> <cfset oMenu.setTitle( "Main menu" )> <cfset entitySave( oMenu )> <cfset ORMFlush()> <cfset oMenuItem = entityNew( "m
<cfset oMenu = entityNew( "menu" )>
<cfset oMenu.setTitle( "Main menu" )>
<cfset entitySave( oMenu )>
<cfset ORMFlush()>
<cfset oMenuItem = entityNew( "menuItem" )>
<cfset oMenuItem.setTitle( "First main menu item" )>
<cfset oMenuItem.setMenu( oMenu )>
<cfset entitySave( oMenuItem )>
<cfset ORMFlush()>
<cfdump var="#oMenu.getMenuItems()#">
<!--- array[empty] --->
<!--- WHY ?--->
<cfset oMenu = entityNew( "menu" )>
<cfset oMenu.setTitle( "Main menu" )>
<cfset entitySave( oMenu )>
<cfset ORMFlush()>
<cfset oMenuItem = entityNew( "menuItem" )>
<cfset oMenuItem.setTitle( "First main menu item" )>
<cfset oMenuItem.setMenu( oMenu )>
<cfset entitySave( oMenuItem )>
<cfset ORMFlush()>
<cfset oMenu.addMenuItem( oMenuItem )>
<cfset entitySave( oMenu)>
<cfset ORMFlush()>
<cfdump var="#oMenu.getMenuItems()#">
在数据库中,我的菜单项。菜单id是正确的
我也试过了
<cfset oMenu = entityNew( "menu" )>
<cfset oMenu.setTitle( "Main menu" )>
<cfset entitySave( oMenu )>
<cfset ORMFlush()>
<cfset oMenuItem = entityNew( "menuItem" )>
<cfset oMenuItem.setTitle( "First main menu item" )>
<cfset entitySave( oMenuItem )>
<cfset ORMFlush()>
<cfset oMenu.addMenuItem( oMenuItem )>
<cfdump var="#oMenu.getMenuItems()#">
<!--- array[empty] --->
在数据库中,我的menu\u item.menu\u id为空
如果你知道我做错了什么,那就好了。
谢谢
node.cfc
<cfcomponent entityname="node" output="false" persistent="true" table="nodes" discriminatorcolumn="type">
<cfproperty name="id" fieldtype="id" generator="identity" default="0" unsavedvalue="0">
<cfproperty name="type" insert="false" update="false">
<cfproperty name="title" ormtype="string" notnull="true" default="" loadInForm="true" required="true">
<cfproperty name="systemName" column="system_name" ormtype="string" notnull="true" default="" loadInForm="true" uniquekey="system_name_lang">
<cfproperty name="parents" singularname="parent" fieldtype="one-to-many" cfc="nodeHierarchy" inverse="true" weight="weight" clearBeforeSave="true">
<cfproperty name="children" singularname="child" fieldtype="one-to-many" cfc="nodeHierarchy" inverse="true" orderby="weight asc">
<cfproperty name="node" fieldtype="many-to-one" cfc="node" fkcolumn="nid">
<cfproperty name="created" ormtype="timestamp" sqltype="timestamp">
<cfproperty name="updated" ormtype="timestamp" sqltype="timestamp">
</cfcomponent>
<cfcomponent entityname="menu" output="false" persistent="true" table="menus" extends="node" joincolumn="node_id" discriminatorvalue="menu">
<cfproperty name="menuItems" singularname="menuItem" fieldtype="one-to-many" cfc="menuItem" inverse="true">
</cfcomponent>
<cfcomponent entityname="menuItem" output="false" persistent="true" table="menus_items" extends="node" joincolumn="node_id" discriminatorvalue="menu_item">
<cfproperty name="menu" fieldtype="many-to-one" cfc="menu" fkcolumn="menu_id">
<cfproperty name="parentMenuItem" fieldtype="many-to-one" cfc="menuItem" fkcolumn="menu_item_id">
<cfproperty name="childMenuItems" fieldtype="one-to-many" cfc="menuItem" fkcolumn="menu_item_id">
<cfproperty name="node" fieldtype="one-to-one" cfc="com.cfc.app.models.node" fkcolumn="nid">
</cfcomponent>
菜单.cfc
<cfcomponent entityname="node" output="false" persistent="true" table="nodes" discriminatorcolumn="type">
<cfproperty name="id" fieldtype="id" generator="identity" default="0" unsavedvalue="0">
<cfproperty name="type" insert="false" update="false">
<cfproperty name="title" ormtype="string" notnull="true" default="" loadInForm="true" required="true">
<cfproperty name="systemName" column="system_name" ormtype="string" notnull="true" default="" loadInForm="true" uniquekey="system_name_lang">
<cfproperty name="parents" singularname="parent" fieldtype="one-to-many" cfc="nodeHierarchy" inverse="true" weight="weight" clearBeforeSave="true">
<cfproperty name="children" singularname="child" fieldtype="one-to-many" cfc="nodeHierarchy" inverse="true" orderby="weight asc">
<cfproperty name="node" fieldtype="many-to-one" cfc="node" fkcolumn="nid">
<cfproperty name="created" ormtype="timestamp" sqltype="timestamp">
<cfproperty name="updated" ormtype="timestamp" sqltype="timestamp">
</cfcomponent>
<cfcomponent entityname="menu" output="false" persistent="true" table="menus" extends="node" joincolumn="node_id" discriminatorvalue="menu">
<cfproperty name="menuItems" singularname="menuItem" fieldtype="one-to-many" cfc="menuItem" inverse="true">
</cfcomponent>
<cfcomponent entityname="menuItem" output="false" persistent="true" table="menus_items" extends="node" joincolumn="node_id" discriminatorvalue="menu_item">
<cfproperty name="menu" fieldtype="many-to-one" cfc="menu" fkcolumn="menu_id">
<cfproperty name="parentMenuItem" fieldtype="many-to-one" cfc="menuItem" fkcolumn="menu_item_id">
<cfproperty name="childMenuItems" fieldtype="one-to-many" cfc="menuItem" fkcolumn="menu_item_id">
<cfproperty name="node" fieldtype="one-to-one" cfc="com.cfc.app.models.node" fkcolumn="nid">
</cfcomponent>
menuItem.cfc
<cfcomponent entityname="node" output="false" persistent="true" table="nodes" discriminatorcolumn="type">
<cfproperty name="id" fieldtype="id" generator="identity" default="0" unsavedvalue="0">
<cfproperty name="type" insert="false" update="false">
<cfproperty name="title" ormtype="string" notnull="true" default="" loadInForm="true" required="true">
<cfproperty name="systemName" column="system_name" ormtype="string" notnull="true" default="" loadInForm="true" uniquekey="system_name_lang">
<cfproperty name="parents" singularname="parent" fieldtype="one-to-many" cfc="nodeHierarchy" inverse="true" weight="weight" clearBeforeSave="true">
<cfproperty name="children" singularname="child" fieldtype="one-to-many" cfc="nodeHierarchy" inverse="true" orderby="weight asc">
<cfproperty name="node" fieldtype="many-to-one" cfc="node" fkcolumn="nid">
<cfproperty name="created" ormtype="timestamp" sqltype="timestamp">
<cfproperty name="updated" ormtype="timestamp" sqltype="timestamp">
</cfcomponent>
<cfcomponent entityname="menu" output="false" persistent="true" table="menus" extends="node" joincolumn="node_id" discriminatorvalue="menu">
<cfproperty name="menuItems" singularname="menuItem" fieldtype="one-to-many" cfc="menuItem" inverse="true">
</cfcomponent>
<cfcomponent entityname="menuItem" output="false" persistent="true" table="menus_items" extends="node" joincolumn="node_id" discriminatorvalue="menu_item">
<cfproperty name="menu" fieldtype="many-to-one" cfc="menu" fkcolumn="menu_id">
<cfproperty name="parentMenuItem" fieldtype="many-to-one" cfc="menuItem" fkcolumn="menu_item_id">
<cfproperty name="childMenuItems" fieldtype="one-to-many" cfc="menuItem" fkcolumn="menu_item_id">
<cfproperty name="node" fieldtype="one-to-one" cfc="com.cfc.app.models.node" fkcolumn="nid">
</cfcomponent>
我通过这样做
和
解决了这个问题
它现在似乎起作用了
index.cfm
<cfset oMenu = entityNew( "menu" )>
<cfset oMenu.setTitle( "Main menu" )>
<cfset entitySave( oMenu )>
<cfset ORMFlush()>
<cfset oMenuItem = entityNew( "menuItem" )>
<cfset oMenuItem.setTitle( "First main menu item" )>
<cfset oMenuItem.setMenu( oMenu )>
<cfset entitySave( oMenuItem )>
<cfset ORMFlush()>
<cfdump var="#oMenu.getMenuItems()#">
<!--- array[empty] --->
<!--- WHY ?--->
<cfset oMenu = entityNew( "menu" )>
<cfset oMenu.setTitle( "Main menu" )>
<cfset entitySave( oMenu )>
<cfset ORMFlush()>
<cfset oMenuItem = entityNew( "menuItem" )>
<cfset oMenuItem.setTitle( "First main menu item" )>
<cfset oMenuItem.setMenu( oMenu )>
<cfset entitySave( oMenuItem )>
<cfset ORMFlush()>
<cfset oMenu.addMenuItem( oMenuItem )>
<cfset entitySave( oMenu)>
<cfset ORMFlush()>
<cfdump var="#oMenu.getMenuItems()#">
您是否尝试过EntityReload()
从数据库中重新加载实体数据?是的,我在删除创建过程后尝试过
,效果相同。您是否尝试过在没有前两个EntitySave()和EntityFlush()的情况下执行此操作?似乎您只需要保存一次。不,我不能,因为oMenu需要有一个ID才能添加到oMenuItem。