【发布时间】:2014-11-21 19:16:14
【问题描述】:
正如您从这个 ERD 中看到的,我正在设计一个记录器来跟踪几种类型的用户的操作。 例如,logger.log 表中的每条记录在相关的 logger.relate.* 表中只有一个相关记录。
单独使用 Phalcon Model,我有 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.)
getter 非常简单,类似于(对不起,我对这个框架真的很陌生):
public function getIdActor() {
return $this->id_actor;
}
换句话说,我想知道这个框架中是否有一种方法可以处理这种情况,而无需自己编写其他选择例程。并且,只要有可能,就具有一些性能(因为我在 logger.log 类中保存了参与者的类型以知道我必须查询哪个关系表,而不是查询所有关系表,然后只计算其中的一条记录唯一的一张桌子)。
最后,我确实使用了很多关系表,因为我需要数据层(而不是逻辑层)来强制执行日志表和许多不同参与者外部表之间的约束。
希望我解释一下情况,非常感谢!
【问题讨论】:
标签: model foreign-keys phalcon multiple-tables