在“有很多”关系模型中动态设置表名

时间:2014-08-30 11:49:58

标签: laravel eloquent

在我的数据库模式中,我有多个表来保存对象的通用数据,例如我有一个user表和一个user_datapost表和post_data , 所以。这些*_data表都包含对象的外键和一对键值。现在在我的laravel模型中,我想为这些表设置一个data模型(而不是每个模型的模型)并以动态方式表示has_many关系,我可以在某种程度上定义表名称根据父模型。我认为父模型会有类似的东西:

return $this->hasMany('data'); 

但我不知道如何表达反向关系,也不知道如何告诉laravel使用哪个*_data表。所以我的问题是,有可能吗?如果是的话,怎么样?

1 个答案:

答案 0 :(得分:1)

您有两种选择。

为每个data_ *表创建一个模型,并使用数据表和用户表中$this->hasMany('data');$this->belongsTo('User');所述的关系。

或者您可以使用Polymorphic relations,我个人更喜欢多态关系解决方案,更加整洁。