Php Laravel 5中的动态表和模型

Php Laravel 5中的动态表和模型,php,mysql,laravel,eloquent,laravel-5.1,Php,Mysql,Laravel,Eloquent,Laravel 5.1,我有下面几张桌子: pages id title ... dynamic_table_1_infos id page_id image_id dynamic_field_1 dynamic_field_2 ... dynamic_table_2_infos ... 因此存在“一对多”关系 是否有任何方法可以在不为每个表“动态”创建可动态[No]信息模型的情况下使用通用方法 如果我在这些模型中需要一些额外的方法呢 “页面

我有下面几张桌子:

pages
    id
    title
    ...

dynamic_table_1_infos
    id
    page_id
    image_id
    dynamic_field_1
    dynamic_field_2
    ...

dynamic_table_2_infos
...
因此存在“一对多”关系

是否有任何方法可以在不为每个表“动态”创建可动态[No]信息模型的情况下使用通用方法

如果我在这些模型中需要一些额外的方法呢

“页面”模型将与“动态表”[no]\u infos”表有许多关系。所以我可能需要一个通用的方法来做这件事。 (有许多动态表信息/有许多动态表信息…)


我试图做的是受到Dupal的内容类型的启发。

如果您想根据某个模型属性的值将单个模型数据保存到多个表中,则需要重写模型的getTable()方法以返回它应该写入的表的名称

我不确定您想如何决定Eloquent应该保存到哪个表-例如,如果在您的模式中有一个名为段的属性,您可以执行以下操作:

public function getTable() {
  return 'dynamic_table_' . $this->segment . '_infos';
}

如果要根据某个模型属性的值将单个模型数据保存到多个表中,则需要重写模型的getTable()方法以返回它应该写入的表的名称

我不确定您想如何决定Eloquent应该保存到哪个表-例如,如果在您的模式中有一个名为段的属性,您可以执行以下操作:

public function getTable() {
  return 'dynamic_table_' . $this->segment . '_infos';
}

当我不确定数据的结构时,我所做的是将其全部存储为JSON。这可以解决你的问题。这在Laravel或PHP中非常好,因为您可以将JSON解析为对象。然而,我很确定这是一种坏习惯。无论如何,您可以创建一个整体的
动态信息
表,然后只包含列,
id
page\u id
,最后是一个
数据
列,在该列中,您可以将动态数据存储为JSON。当我不确定数据的结构时,我会将其全部存储为JSON。这可以解决你的问题。这在Laravel或PHP中非常好,因为您可以将JSON解析为对象。然而,我很确定这是一种坏习惯。无论如何,您可以创建一个整体的
动态\u info
表,然后只包含列、
id
page\u id
,最后是一个
数据
列,您可以在其中将动态数据存储为JSON。动态模型可以有一个图像id(也可以是动态添加的)。该模型将“在运行中”创建,我需要“在运行中”添加关系,以避免手动编辑。(“图像id”属于“图像”模型)。我不知道您需要什么。你能再举一些例子吗?告诉我为什么你需要这样一种非标准的行为?我想要构建的东西不知何故受到了Drupal内容类型的启发。在我的例子中,每种内容类型都有一个自定义表(包含x个字段的文章/包含y个字段的产品等)。手动是很容易的,但我想有一个它的管理界面。因此,当我添加一个内容类型时,我可以创建动态表格信息、2、3等。我甚至可以使用Artisan命令创建模型,但我不知道如何处理关系。例如,动态表可以具有来自图像表的图像引用。动态模型可以具有图像id(也可以是动态添加的)。该模型将“在运行中”创建,我需要“在运行中”添加关系,以避免手动编辑。(“图像id”属于“图像”模型)。我不知道您需要什么。你能再举一些例子吗?告诉我为什么你需要这样一种非标准的行为?我想要构建的东西不知何故受到了Drupal内容类型的启发。在我的例子中,每种内容类型都有一个自定义表(包含x个字段的文章/包含y个字段的产品等)。手动是很容易的,但我想有一个它的管理界面。因此,当我添加一个内容类型时,我可以创建动态表格信息、2、3等。我甚至可以使用Artisan命令创建模型,但我不知道如何处理关系。例如,动态表可以具有来自图像表的图像引用。