草庐IT

php - Phalcon:多态关联

coder 2023-10-12 原文

Phalcon 是否有一种内置的方式来管理多态关联——通过行为或 native ——而不是手动处理它们?

谢谢!

最佳答案

多态关联通常会被误解,因为有很多方法可以使用这种反模式。

就是说,如果我没弄错的话,您想要一个有值(value)的模型,它可能指的是一种模型或另一种模型,对吧?!

理论上是可行的,所以请随意尝试一下,如果你成功了告诉我......

好吧,正如我之前所说,有很多方法可以使用 Phalcon 实现这一点,我现在可以想象的一种方法如下:

MainModel 当然应该有两列(即“assoc_id”、“assoc_type”)。然后在 Phalcon 中建立与特殊模型的关系,在本例中称为 AssocModel

AssocModel 没有真正的表,但有方法 getSource覆盖并返回基于“assoc_type”的相应表名。

如果这些关联模型共享一组公共(public)的列,您可以创建一个接口(interface) IAssociable 或其他东西,这样您就可以保持关联模型的定义一致。

但是,如果您真的需要实际模型从这种关联中获取一些独有数据,不幸的是,将需要第二个模型实例来获取剩余的列/属性。为此,就像 getSource 返回正确的表名一样,您可以创建另一个方法来使用相应的 ID 实例化正确的模型类。

不确定这是否有帮助,但请与我分享这方面的任何进展,以便我们可以在这方面走得更远......

关于php - Phalcon:多态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27872046/

有关php - Phalcon:多态关联的更多相关文章

  1. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  2. ruby - Rails 关联 - 同一个类的多个 has_one 关系 - 2

    我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下

  3. ruby-on-rails - 复数 for fields_for has_many 关联未显示在 View 中 - 2

    目前,Itembelongs_toCompany和has_manyItemVariants。我正在尝试使用嵌套的fields_for通过Item表单添加ItemVariant字段,但是使用:item_variants不显示该表单。只有当我使用单数时才会显示。我检查了我的关联,它们似乎是正确的,这可能与嵌套在公司下的项目有关,还是我遗漏了其他东西?提前致谢。注意:下面的代码片段中省略了不相关的代码。编辑:不知道这是否相关,但我正在使用CanCan进行身份验证。routes.rbresources:companiesdoresources:itemsenditem.rbclassItemi

  4. ruby-on-rails - Rails 中同一个类的多个关联的最佳实践? - 2

    我认为我的问题最好用一个例子来描述。假设我有一个名为“Thing”的简单模型,它有一些简单数据类型的属性。像...Thing-foo:string-goo:string-bar:int这并不难。数据库表将包含具有这三个属性的三列,我可以使用@thing.foo或@thing.bar之类的东西访问它们。但我要解决的问题是当“foo”或“goo”不再包含在简单数据类型中时会发生什么?假设foo和goo代表相同类型的对象。也就是说,它们都是“Whazit”的实例,只是数据不同。所以现在事情可能看起来像这样......Thing-bar:int但是现在有一个新的模型叫做“Whazit”,看起来

  5. ruby-on-rails - 如何在 Rails 4 中搜索关联 - 2

    我想获取主题名称与搜索关键字匹配的所有配置文件。现在我正在加载所有配置文件。我需要知道如何实现它。非常感谢任何帮助。配置文件.rbhas_many:categorizationshas_many:subjects,through::categorizations主题.rbhas_many:categorizationshas_many:profiles,through::categorizations分类.rbbelongs_to:profilebelongs_to:subjectviews/search/index.html.erb#searchform'get'do%>nil%>#

  6. ruby-on-rails - 如何让 Rails View 返回其关联的操作名称? - 2

    我有一个非常简单的Controller来管理我的Rails应用程序中的静态页面:classPagesController我怎样才能让View模板返回它自己的名字,这样我就可以做这样的事情:#pricing.html.erb#-->"Pricing"感谢您的帮助。 最佳答案 4.3RoutingParametersTheparamshashwillalwayscontainthe:controllerand:actionkeys,butyoushouldusethemethodscontroller_nameandaction_nam

  7. ruby-on-rails - rails 多态关联(遗留数据库) - 2

    我使用的是遗留数据库,所以我无法控制数据模型。他们使用了很多多态链接/连接表,就像这样createtableperson(per_ident,name,...)createtableperson_links(per_ident,obj_name,obj_r_ident)createtablereport(rep_ident,name,...)其中obj_name是表名,obj_r_ident是标识符。因此链接的报告将按如下方式插入:insertintoperson(1,...)insertintoreport(1,...)insertintoreport(2,...)insertint

  8. ruby - 如何将新的 rvm 安装与现有的 ruby​​ 版本相关联? - 2

    我遇到了RVM的问题,所以我卸载并重新安装了它。事实是我实际上尝试过rbenv,但这对我来说没有用,所以我试图让rvm重新启动并运行-而不必安装重复版本的Ruby。我至少安装了1个现有版本的Ruby:ruby--versionruby1.8.7(2011-12-28patchlevel357)[universal-darwin11.0]但是当我执行rvmlist时,我得到一个空白列表:bash-3.2$rvmlistrvmrubies#Defaultrubynotset.Try'rvmaliascreatedefault'.#=>-current#=*-current&&default

  9. ruby-on-rails - ActiveRecord 如何将现有记录添加到 has_many :through relationship in rails? 中的关联 - 2

    在我的Rails项目中,我有三个模型:classRecipe:recipe_categorizationsaccepts_nested_attributes_for:recipe_categories,allow_destroy::trueendclassCategory:recipe_categorizationsendclassRecipeCategorization通过这个简单的has_many:through设置,我怎样才能像这样获取给定的食谱:@recipe=Recipe.first并根据现有类别向此食谱添加类别,并在相应类别上对其进行更新。所以:@category=#Exi

  10. ruby - 与 DataMapper 和 Sinatra 建立关联 - 2

    好吧,这让我发疯了。我已经阅读了Associations文章和示例,并在过去三天里一直在努力解决这个问题,我已经厌倦了这让我感到愚蠢,所以......如何与DataMapper建立关联?(我将DM与Sinatra和SQLite3一起使用。对于具有多个值等的单个表,一切都很好。当我开始尝试将它们关联起来时,我开始出现错误。)假设我有一个种满苹果树的Orchard。每棵树都有很多苹果。每个苹果都有很多种子。因此每棵树都有许多种子通过它的苹果require'sinatra'require'datamapper'DataMapper::setup(:default,"sqlite3://#{D

随机推荐