作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用传输,并且文章和视频之间存在多对多关系。我需要做的是在每个视频添加到文章时为其贴上时间戳。即我有两个表:
<package name="article">
<object name="Article" table="article">
<id name="ID" type="numeric"/>
<property name="Title" type="string" column="title"/>
<property name="Body" type="string" column="body"/>
<manytomany name="Videos" table="article_videos">
<link to="article.Atricle" column="articleID"/>
<link to="assets.Video" column="videoID"/>
<collection type="array">
<order property="OrderIndex" order="asc"/>
</collection>
<property name="TimeStamp" type="timestamp" column="timeStamp"/>
</manytomany>
</object>
</package>
<package name="assets">
<object name="Video" table="video">
<id name="ID" type="numeric"/>
<property name="url" type="string" column="url"/>
</object>
</package>
最佳答案
您可能需要做的是为您的 article_videos
创建一个新对象。加入。
因为 Transfer ORM 透明地处理多对多连接,所以如果您想在连接上添加和访问其他属性,您不会直接与连接表交互,您将需要创建一个新对象。有几种方法可以实现这一点。
如果您仍然想透明地处理多对多关系并且时间戳将由数据库自动填充,您可以保持关系原样并添加一个表示 article_videos
的新对象。以及将该对象与文章和视频对象连接起来的新关系。
因此,您将添加一个代表 article_videos
的新对象。 ,我可能还会向数据库添加代理键,或者您可能想要使用复合 ID:
<object name="ArticleVideo" table="article_videos">
<id name="ID" type="numeric"/>
<property name="TimeStamp" type="timestamp" column="timeStamp"/>
</object>
Article
引用这个新对象的对象:
<object name="Article" table="article">
<id name="ID" type="numeric"/>
<property name="Title" type="string" column="title"/>
<property name="Body" type="string" column="body"/>
<manytomany name="Videos" table="article_videos">
<link to="article.Article" column="articleID"/>
<link to="assets.Video" column="videoID"/>
<collection type="array">
<order property="OrderIndex" order="asc"/>
</collection>
</manytomany>
<onetomany name="ArticleVideo">
<link to="article.ArticleVideo" column="articleID"/>
<collection type="array">
<order property="TimeStamp" order="asc"/>
</collection>
</onetomany>
</object>
Video
对象:
<object name="Video" table="video">
<id name="ID" type="numeric"/>
<property name="url" type="string" column="url"/>
<onetomany name="ArticleVideo">
<link to="article.ArticleVideo" column="videoID"/>
<collection type="array">
<order property="TimeStamp" order="asc"/>
</collection>
</onetomany>
</object>
Article
至
Video
对象关系正常,但如果您需要访问其他属性:
// Creating the join using the many-to-many relationship
article = transfer.get("article.Article", 1);
article.addVideo(video);
// Creating the join using the ArticleVideo object
articleVideo = transfer.new("article.ArticleVideo");
articleVideo.addParentArticle(article);
articleVideo.addParentVideo(video);
transfer.save(articleVideo);
// Using a composite ID to access the ArticleVideo
articleVideo = transfer.get("article.ArticleVideo", {
"ArticleID" = 1,
"VideoID" = 1
});
WriteOutput("The timestamp is: #articleVideo.getTimeStamp()#");
关于coldfusion - 在 Transfer ORM (Coldfusion) 中向多条连接添加属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14081105/
我是一名优秀的程序员,十分优秀!