我有一个日志表,其中有一个名为“源”的特殊字段,我想根据源链接到不同的表。
使用本机 sql,我会创建 2 个字段:source_id 和 source_type 然后自定义查询以加入适当的表。我想知道是否有任何方法可以通过教义做到这一点?
编辑:
看来我可以为此目的使用继承映射。但是,我遇到了另一个问题:假设我现在有 2 个字段:映射到不同对象的源和目标。所以一个对象既可以是源也可以是目标,我不确定在这种情况下该怎么做。
在 Doctrine 示例中,看起来我可以创建一个名为 Sourceable 的父类,然后让我的对象实体继承它,但现在由于这些实体可以是 Sourceable 或 Destinationable 并且 PHP 不允许多重继承,我不知道该怎么做。
编辑2:
我发现了一个涵盖此问题的 Ruby 案例: https ://github.com/spree/spree/blob/master/core/app/models/spree/adjustment.rb
class Adjustment < ActiveRecord::Base
belongs_to :adjustable, polymorphic: true
belongs_to :source, polymorphic: true
belongs_to :originator, polymorphic: true
源是触发调整的地方。对于税收和促销调整,这将是订单本身。对于运输调整,这将是与此订单的运输方式相对应的运输。
可调的就是被调整的对象,也就是顺序。
发起者是负责调整的对象。对于促销调整,这将是一个 Spree::Promotion::Actions::CreateAdjustment 对象。对于税收调整,Spree::TaxRate 对象。对于运输调整,Spree::ShippingMethod 对象。
在他们的情况下,订单可以是源或可调整的。显然这个例子是 ruby 并且有活动记录,但我想知道如何用 Doctrine 做同样的事情?