使用 Laravel 4 使用关系数据库存储动态数据
Posted
技术标签:
【中文标题】使用 Laravel 4 使用关系数据库存储动态数据【英文标题】:Storing Dynamic Data with a Relational Database with Laravel 4 【发布时间】:2014-04-22 15:28:21 【问题描述】:我想知道如何存储动态表单中的数据,它可能有 10 个变量或 100 个变量,具体取决于用户,并且仍然利用 Laravel 的关系数据库功能?通常我只会序列化表单,但这似乎会浪费 Laravel 的很多潜力。对此的任何和所有想法将不胜感激!非常感谢你们!
【问题讨论】:
【参考方案1】:序列化的几种替代方案:
使用 SQL:使用 JSON 对象。您可以在模型中包含逻辑以 解析/生成该 JSON 对象。例如,
$model->fill(json_decode($jsonified_array, true))
将允许
雄辩的模型表现得好像它只是抓住了一堆字段
从一张桌子。
使用 NoSQL:您可以尝试类似 MongoDB bundle for Laravel 的方法。 MongoDB 是一种面向文档的 DMS,是关系数据库(例如 作为 SQL)。它更适用于“非结构化”数据,例如什么 你在描述。它与将数据存储在 JSON 对象中极为相似,但采用二进制级别,效率更高。
个人推荐选项#1,因为我通常需要使用关系数据库,但这取决于您的程序要求和您的个人喜好。
【讨论】:
太棒了,这听起来是个很棒的计划,我很感激。 抱歉,快速提问。如果我的表单是动态的并且会改变大小和变量,我如何将它转换为 JSON 对象?以前从未使用过 JSON,也找不到这个答案。 @gv0029json_encode($_POST)
在表单操作的 php 脚本中应该可以解决问题。
@gv0029 不确定您要在那里做什么。 Form::open 中的 Json_encode 不会做任何事情。只需将 json_encode(Input::all())) 放入 order-create-post 处理程序中即可对表单数据进行 json 化。
@gv0029 这就是为什么我改变了我的建议,使用 Input::all() 而不是 $_POST,很确定这些不会出现在 laravel Input 数组中。如果有,只需使用 Input::except() 删除不需要的。以上是关于使用 Laravel 4 使用关系数据库存储动态数据的主要内容,如果未能解决你的问题,请参考以下文章
使用 laravel 4 上的循环将数据数组存储到单个数组中
使用 jQuery post 使用 Laravel 将动态数据传递给引导模式