推荐的网站库和图像数据库方法

时间:2014-11-04 10:00:18

标签: database laravel schema

我正在为网站创建架构,该网站的图片和对象类型为post,图片可能属于该网站。所以我的图像数据库可能如下所示:

# 'Image' table
----------------
id
name
url
post_id

然后,对于每个帖子,我都可以抓住它的图像。但是:

  • 两个帖子永远不能分享图片
  • 如果我添加另一个page对象类型,我必须确保它们永远不会有id

所以我认为一个好的开始就是从图像中删除post_id字段,因为它比它的价值更麻烦。这种manyToMany问题的最佳解决方案是什么?目前我正在考虑在表格之间:

# 'Gallery' pivot table
------------------------
id
object_type [post or page]
object_id
image_id

现在postspages可以有多个images。我只是通过这个来抓取对象类型的所有相关图像。这是正确的吗?如果它有任何区别,我使用 Laravel 框架。我正在构建一个相当大的应用程序,我意识到,如果我早点弄错了,它可能会在以后真的咬我。

1 个答案:

答案 0 :(得分:1)

你仍然回答了你的问题:-) 我会选择多对多关系 - 因此需要一个数据透视表。

有一种约定,即数据透视表名称在其模型连接后以字母顺序命名。因此,例如在您的情况下,您的数据透视表将如下所示:

table: image_post
------------------------
id  |  image_id  |  post_id

查看documentatin以获取更多信息:many-to-many

渴望加载也是一个有趣的部分: eager loading

e.g。查询特定帖子及其所有图片:

$post = Post::with( 'images' )->find($id);