ERD example http://i57.tinypic.com/zn367d.png
从这个ERD可以看出,我正在设计一个跟踪几种用户行为的记录器。 例如,logger.log表中的每条记录在一个相关的logger.relate。*表中只有一条相关记录。
使用Phalcon Model作为独立模型,我有7个模型,一个用于主表,6个用于关系表:
在Log模型类中,我使用hasMany()方法设置1-n关系;在其他模型类中,我使用了belongsTo()方法来获得n-1个关系。
我的问题: 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类中持有actor的类型以知道我将要查询哪个关系表,而不是查询所有关系表,然后只计算一个记录来自只持有它的一个表。)
最后,我确实使用了很多关系表,因为我需要数据层(而不是逻辑层)来强制执行日志表和许多不同的actor外部表之间的约束。
希望我解释一下情况,非常感谢你!
答案 0 :(得分:0)
EIDT: 在最终获得意义之后,答案是否定的。 您应该使用查询或坚持实际的实现。我认为实际实施的开销太大了。
ORIGINAL: 我不太确定我是否理解你的问题。
您想从模型中选择相关模型吗? 如果是这样,您可以使用belongsTo和hasMany来创建别名。两个方法的最后一个参数是一个数组:
array(
'alias' => 'yourAlias'
)
现在您可以使用$log->yourAlias->getIdActor();