是否建议对联接使用多态关系?

时间:2018-11-07 14:34:49

标签: php laravel lumen

我创建了迁移以及它们之间的关系。看起来我正在使用多态关系,因为在一个表中,我可能具有一个模型的值,或者我可能具有另一个模型的值。您可能会猜到,我有这样的东西

  

ID Mappable_type Mappable_id值

Mappable_type可以是一个或多个其他模型。 mappable_id将是该模型的适当ID。我需要这样做是因为我正在创建动态表单构建器,而这正是我设计数据库的方式。

现在,我需要一起从5个表中获取一些记录,因此我必须使用联接。我的mappable_type表在这5个连接中排在第三位。现在,我还应该怎么做,才能仅从这5个联接中获取具有该变形表中特定模型类型的数据?我现在正在做类似的事情:

$final = Dynamic::join('dynamic_properties_values','dynamic_properties_values.dynamic_id','=','dynamic.id')
                    ->join('dynamic_properties_mapping','dynamic_properties_mapping.id','=','dynamic_properties_values.mapping_id')
                    ->where('dynamic_properties_mapping.mappable_type','=','App\Driver')
                    ->get();

如您所见,我亲手写了

  

“应用\驱动程序”

。不管是我手动编写它还是将其保存到变量中并在此处使用它都没关系。令我真正困扰的是,当我将数据插入这些变形表时,Model被保存为“ App \ Driver”。如果我出错了,并且在通过联接获取时,我会写类似App \ Http \ Driver的内容怎么办?或者,如果我在代码项目中更改了模型本身的位置,该怎么办?

什么是在我的项目达到大量用户时不犯此类错误的最佳实践?

0 个答案:

没有答案