Join 更新ORM命令中的联接字段
我有一个关于连接字段的对象关系更新的问题 我正在使用codeigniter和datamapper dmz进行一个项目。但我认为我的问题在于对ORMs的一般理解。所以我可以自由回答你所知道的任何问题 我有两张桌子,货物和标签。一种商品可以有很多标签。一切正常,但我正在寻找一种合并标签的方法。这意味着我决定移除标记A,取而代之的是所有被标记的东西,现在被标记B标记 我只有货物的型号和标签。连接关系没有单独的模型,因为我相信这些ORM是为工作而设计的 我知道如何删除标签。但是我不知道如何进入联接表来重定向引用,因为联接表没有模型。我宁愿使用ORM,然后发出原始SQL命令Join 更新ORM命令中的联接字段,join,orm,Join,Orm,我有一个关于连接字段的对象关系更新的问题 我正在使用codeigniter和datamapper dmz进行一个项目。但我认为我的问题在于对ORMs的一般理解。所以我可以自由回答你所知道的任何问题 我有两张桌子,货物和标签。一种商品可以有很多标签。一切正常,但我正在寻找一种合并标签的方法。这意味着我决定移除标记A,取而代之的是所有被标记的东西,现在被标记B标记 我只有货物的型号和标签。连接关系没有单独的模型,因为我相信这些ORM是为工作而设计的 我知道如何删除标签。但是我不知道如何进入联接表来重
标记A的所有对象
标记A
这听起来像是应用程序语言中需要做的事情。例如,对于Java:
Good myGood = new Good("My Good");
Good yourGood = new Good("Your Good");
Tag mine = new Tag("mine");
Tag yours = new Tag("yours");
myGood.tag(mine);
yourGood.tag(yours);
/** Persist tags to database */
mine.save();
yours.save();
/** Persist goods to database */
myGood.save();
yourGood.save();
/** I take your good */
yourGood.tag(mine);
yourGood.removeTag(yours);
/** Update database */
yourGood.update();
/** Get my goods */
List<Good> myGoods = dao.getGoodsWithTag(mine);
log.info(yourGoods.size()); // 2
log.info(myGoods.get(0)); // "My Good"
log.info(myGoods.get(1)); // "Your Good"
/** Get your goods */
List<Good> yourGoods = dao.getGoodsWithTag(yours);
log.info(yourGoods.size()); // 0
/** Make all of your goods mine */
/** Get your goods */
List<Good> yourGoods = dao.getGoodsWithTag(yours);
for (Good yoursRightNow : yourGoods) {
yoursRightNow.tag(mine);
yoursRightNow.removeTag(yours);
yoursRightNow.update(); // Or do this later as a transaction
}
/** Make all of your goods mine through SQL */
dao.sendSql("UPDATE goods_tags SET tagId = " + mine.getId() + " WHERE tagId = " + yours.getId() + ";");
dao.sendSql("DELETE FROM tags WHERE tag = \"yours\";");