首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多到多与没有组合键的cf轮的关系

多到多与没有组合键的cf轮的关系
EN

Stack Overflow用户
提问于 2011-11-26 02:20:17
回答 1查看 434关注 0票数 1

我一直在跟踪来自这里的信息: cfwheels.org/docs/1-1/chapter/nested-properties

最后我下载了一个样本应用,它在同一个地方崩溃

代码执行得很好,因为我没有错误,但许多表没有得到新的条目,当我在数据库中手动添加条目时,它们不会在复选框中反映出来,有时在更新模型时会删除它们。

编辑

我发现了问题..。只是不知道该怎么解决。有一个很容易被忽略的小细节。应用程序似乎依赖于复合键,键的顺序很重要。但我不使用合成钥匙。

(以https://github.com/mhenke/cfwheels-training/blob/develop/03-tags.md为例)

我如何得到一个有科尔的桌子:idtagsidcommentsid

我看到的问题是,在创建taggings模型时,cf轮子一直试图使用id标记。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-26 22:42:21

虽然我非常喜欢CFWheels,但我不得不承认,我不是表单助手函数或“快捷”功能的粉丝。在本例中,我只需“还原”到更简单/更简单的CFML,以构造复选框(如果不是整个表单)和循环逻辑,以保存联接表中的值。例如:

代码语言:javascript
复制
<fieldset>
<legend>PropertyLanguages</legend>

<cfloop query="Languages">
<label>
  #Languages.language#
  <input type="checkbox" name="Property[PropertyLanguages]" value="#Languages.id#">
</label>
</cfloop>


</fieldset>

然后更改更新控制器逻辑如下:

代码语言:javascript
复制
<!--- CONTROLLER - update.cfm - updateProperty --->
<cffunction name="updateProperty">
    <cfscript>   
    Property = model("Property").findByKey(key=params.Property.id);
    Property.update(params.Property);

    if (IsDefined("params.Property.PropertyLanguages"))
    {
      model("PropertyLanguages").deleteAll(where="propertyid=#params.Property.id# AND languageid NOT IN (#params.Property.PropertyLanguages#)");

      for (var i = 1; i<=ListLen(params.Property.PropertyLanguages); i++)
      {
        languageid = ListGetAt(params.Property.PropertyLanguages, i);
        if (! IsObject(model("PropertyLanguages").findOne(where="propertyid=#params.Property.id# AND languageid=#languageid#")))
        {
          pl = model("PropertyLanguages").new();
          pl.langugageid = languageid;
          pl.propertyid = params.Property.id;
          pl.save();
        }
      }
    }
    else
    {
      model("PropertyLanguages").deleteAll(where="propertyid=#params.Property.id#");
    }
    </cfscript>    
</cffunction>

我还没有测试过这个,但它应该会起作用的,或多或少。它不是那么简单(应该吗?)正在使用车轮帮手,但看起来不算太糟。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8275830

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档