在我的数据库模式中,我有多个表来保存对象的通用数据,例如我有一个user
表和一个user_data
,post
表和post_data
, 所以。这些*_data
表都包含对象的外键和一对键值。现在在我的laravel模型中,我想为这些表设置一个data
模型(而不是每个模型的模型)并以动态方式表示has_many
关系,我可以在某种程度上定义表名称根据父模型。我认为父模型会有类似的东西:
return $this->hasMany('data');
但我不知道如何表达反向关系,也不知道如何告诉laravel使用哪个*_data
表。所以我的问题是,有可能吗?如果是的话,怎么样?
答案 0 :(得分:1)
您有两种选择。
为每个data_ *表创建一个模型,并使用数据表和用户表中$this->hasMany('data');
和$this->belongsTo('User');
所述的关系。
或者您可以使用Polymorphic relations,我个人更喜欢多态关系解决方案,更加整洁。