Model 具有多个外键的Phalcon模型和表属性

Model 具有多个外键的Phalcon模型和表属性,model,foreign-keys,phalcon,multiple-tables,Model,Foreign Keys,Phalcon,Multiple Tables,正如您从这个ERD中所看到的,我正在设计一个记录器,它跟踪几种类型用户的操作。 例如,logger.log表中的每条记录在一个相关的logger.relate.*表中只有一条相关记录 使用Phalcon模型作为独立模型,我有7个模型,一个用于主表,6个用于关系表: 日志 LogRelateCarrier ... 在Log模型类中,我使用hasMany方法设置1-n关系;在其他模型类中,我对n-1关系使用了belongsTo方法 我的问题: 在Phalcon中有没有一种方法可以直接处理像这样的场景

正如您从这个ERD中所看到的,我正在设计一个记录器,它跟踪几种类型用户的操作。 例如,logger.log表中的每条记录在一个相关的logger.relate.*表中只有一条相关记录

使用Phalcon模型作为独立模型,我有7个模型,一个用于主表,6个用于关系表:

日志 LogRelateCarrier ... 在Log模型类中,我使用hasMany方法设置1-n关系;在其他模型类中,我对n-1关系使用了belongsTo方法

我的问题: 在Phalcon中有没有一种方法可以直接处理像这样的场景,这样我就可以通过执行以下操作获得日志记录参与者的ID:

$log        = Log::findFirst(1);
$id_actor   = $log->getIdActor();   // Getter method for actor's ID
$actor_type = $log->getActorType(); // Getter method for actor's type (customer, carrier, etc.)
getters非常简单,比如不好意思,我对这个框架非常陌生:

public function getIdActor() {
    return $this->id_actor;
}
换句话说,我想知道在这个框架中是否有一种方法可以处理这样的场景,而不必自己编写其他选择例程。而且,只要有可能,我在logger.log类中保存actor的类型,以了解我必须查询哪个关系表,而不是查询所有关系表,然后从保存它的唯一表中只计算一条记录

最后,我确实使用了很多关系表,因为我需要数据层而不是逻辑层来实施日志表和许多不同参与者外部表之间的约束

希望我解释一下情况,非常感谢

EIDT: 在最终明白了意思之后,答案是否定的。 您应该使用查询或坚持使用实际实现。我认为实际实现的开销不会太大

原件: 我不太确定我是否正确理解了你的问题

是否要从模型内部选择相关模型? 如果是这样,您可以使用belongsTo和hasMany来创建别名。这两种方法的最后一个参数是数组:

array(
  'alias' => 'yourAlias'
)

现在您可以使用$log->youralas->getIdActor

我知道相关的模型。我的问题是,根据相对关系表是否有一条记录链接到主表记录的条件,主模型的每个实例将只有六个相关模型之一的一个实例。因此,我在主模型实例属性type_actor上使用正确相关模型的findFirst来处理这种情况,避免在其他相关表上运行其他5个findFirst,因为前提条件,这些表将生成空结果集。Phalcon是否有一种特殊的方法来自动处理这种情况。我仍然不确定我是否理解正确。。让我们继续尝试:您可以在日志模型中创建一个方法,在actor_类型上实现一个开关,然后返回通过关系连接的适当模型。希望这能有所帮助:根据你的回答,你已经了解了情况。你解释的是我实施的实际解决方案。它实际上执行两个单独的查询:一个用于日志模型,另一个用于适当的相关模型。我可以使用query通过单个外部连接获得相同的日期,但我想知道我是否可以让Phalcon在保持如此高的概念水平的同时执行这样的操作:那么您的问题的答案是否,我将更新我的答案: