【发布时间】:2019-08-01 11:15:03
【问题描述】:
我想问一下你们在使用对象数组将数据保存和更新到数据库时的最佳实践。
例如我有这个 AoJ:
[
{
package_id: 1,
posts: [
{id: 1, post_id: "1d1479c6-c114-46d5-becd-e4715c14e57d", name: "Post 1", price: 3000}
{id: 2, post_id: "84f37e37-d050-4efd-bd08-811ab893959f", name: "Post 2", price: 3000}
{id: 3, post_id: "1d1479c6-c114-46d5-becd-e4715c14e57d", name: "post 3", price: 3000}
{id: 4, post_id: "84f37e37-d050-4efd-bd08-811ab893959f", name: "post 4", price: 3000}
]
}
];
对于每个数组,我将在数据库上创建一个具有新 ID 的新行。
这就是我想要的
如果我想删除 id 3,如何更新数据? 检测应从包中删除某些记录的最佳做法是什么?
目前我的解决方案是:
[
{
package_id: 1,
posts: [
{id: 1, post_id: "1d1479c6-c114-46d5-becd-e4715c14e57d", name: "Post 1", price: 3000, remove: false}
{id: 2, post_id: "84f37e37-d050-4efd-bd08-811ab893959f", name: "Post 2", price: 3000, remove: false}
{id: 3, post_id: "1d1479c6-c114-46d5-becd-e4715c14e57d", name: "post 3", price: 3000, remove: true}
{id: 4, post_id: "84f37e37-d050-4efd-bd08-811ab893959f", name: "post 4", price: 3000, remove: false}
]
}
];
所以在更新 package_id 1 帖子时,当它看到 remove: true 时,它将删除它。
你们怎么看?有什么让它更简单的建议吗?
注意:我不能使用删除所有内容并发布新的一种方法。因为每个 package_id 帖子都与其他表有关系
【问题讨论】:
-
在我看来是偏好,这取决于包与帖子的关系,如果帖子可能属于多个包并且包有多个帖子,这将是多对多的关系,所以我将创建一个数据透视表,或者如果一个帖子不能属于多个包,我想将 package_id 作为外键存储在帖子表中。
-
@PrafullaKumarSahu 第一个是正确的。我没有考虑很多。嗯有趣。谢谢你的主意!
-
@PrafullaKumarSahu 当然。如果您可以举一个简单的例子来保存和更新多对多,那将会很有帮助。因为我的标题关于那个。大声笑
-
好的,我会添加一个答案。
标签: php arrays database laravel eloquent-relationship