数据库 - 为Laravel项目制作媒体库(结构方法)

时间:2016-06-19 08:42:06

标签: database laravel database-design eloquent

我知道问题不是那么清楚,我会尝试证明这一点......

主要问题: 我正试图为我网站上的所有媒体制作媒体库。我有3种类型的媒体 Image & 视频& Slider .. Slider 媒体中包含一些图片。

我想做什么 如何制作一个可以在我的数据库中包含这些对象的模型,以便 - >如果我想在小部件或博客或我网站的任何部分的帖子中使用媒体,我只是将此网站部分作为媒体对象的ID

我尝试了什么

Media表包含(idmedia_typeid_in_type_table

image表格中包含(idpath

Video表格中包含(idpath

Slider表包含(idpath_img_1path_img_2path_img_3

但我不知道如何将它们联系起来以正确检索媒体对象

这个图库数据库有更好的结构吗?以及如何关联表格?

修改==> 经过另一个想法: 滑块实际上是由一些图像构成的,那么我们只有两种类型的视频& 图像,虽然它们具有相同的结构,但结构将是这样的......

Media表包含(idtypearray_of_IDs

type =>为了演示类型,它将不会被使用

array_of_IDs =>可以有一个或多个图库对象

Gallery表格中包含(idpath

然而我不确切知道Laravel如何实施这种方法,因为我是新的......有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

简单的方法是将DB更改为以下3个表

class MediaProperty extends Eloquent{
      $table = media_properties
      $filleable = array('prop_name');
}

class Media extends Eloquent{
    $table = $media
    public function mediaProperties(){
        return $this->belongsToMany('MediaProperty','media_to_properties', 'media_id', 'prop_id')->withPivot('val');
    }
}

那么你将拥有2个模型,它们大致如下:

docker logs rabbitmq_container_id

当您使用id(mediaProperties)添加id来调用模型时,这将允许您使用除路径之外的更多属性来扩展媒体对象。

写于laravel 4.2