gpt4 book ai didi

mysql - 冷聚变 10 ORM。如何使用 2 个多对多表自定义 EntityLoad 返回值?

转载 作者:行者123 更新时间:2023-11-29 00:23:38 24 4
gpt4 key购买 nike

我有3张 table

用户

  • users_pk
  • 用户名

用户设置

  • users_settings_pk
  • users_fk
  • settings_fk
  • 值(value)

设置

  • settings_pk
  • 设置名称
  • 值列表

UsersUsers_Settings
具有一对多关系SettingsUsers_Settings

具有 一对多关系

Users_SettingsUsers
具有多对一关系Users_SettingsSettings

具有 多对一关系

我如何使用 EntityLoad 获取特定用户的所有 settings.name 和关联的 users_settings.value?

我目前的解决方案是进行自定义查询或使用 cfquery,但想知道是否有使用 coldfusion ORM 的方法。

最佳答案

假设这些组件及其关系与您的类似(这里只是最少的代码,省略了 inits()、inverse 等,)...

用户.cfc

component persistent="true" table="users"{
property name="users_pk" fieldType="id" generator="native";
property name="name" column="userName";
property name="settings" fieldType="one-to-many" cfc="UserSetting" fkColumn="users_fk";
}

设置.cfc

component persistent="true" table="settings"{
property name="settings_pk" fieldType="id" generator="native";
property name="name" column="settingName";
property name="userSettings" fieldType=s"one-to-many" cfc="UserSetting" fkColumn="settings_fk";
}

用户设置.cfc

component persistent="true" table="users_settings"{
property name="users_settings_pk" fieldType="id" generator="native";
property name="value";
property name="user" fieldType="many-to-one" cfc="User" fkColumn="users_fk";
property name="setting" fieldType="many-to-one" cfc="Setting" fkColumn="settings_fk";
}

...您应该能够加载用户并输出他们的设置,如下所示:

ShowUserSettings.cfm

<cfset user =   EntityLoadByPK( "User",1 )>
<!DOCTYPE html>
<html>
<head>
<title>User settings</title>
</head>
<body>
<cfoutput>
<h2>User #user.getName()#</h2>
<dl>
<cfloop array="#user.getSettings()#" index="userSetting">
<dt>Setting: #userSetting.getSetting().getName()#</dt>
<dd>Value: #userSetting.getValue()#</dd>
</cfloop>
</dl>
</cfoutput>
</body>
</html>

关于mysql - 冷聚变 10 ORM。如何使用 2 个多对多表自定义 EntityLoad 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20080416/

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