Model view controller Laravel 5-关系和数据处理

Model view controller Laravel 5-关系和数据处理,model-view-controller,database-design,laravel-5,Model View Controller,Database Design,Laravel 5,我有一个可以创建不同类型文档的系统。最初,我对每个文档都有一个新的模型,但我不认为这是最好的方法,因为它会很快变得混乱。所以我想做的是建立一个通用的文档模型,并从中生成单个文档。我已经想出了以下类型的设计 所以一个文档可以有一个文档a和一个文档B。每个项目只能创建一次DocumentA和DocumentB,这就是为什么我有这种关系。现在,每个文档的每个表单都有一个上载按钮,支持文档可以与生成的文档一起上载。因此,文档可以进行一对多文件上传 这就是我困惑的地方。有人访问我的门户并选择创建文档的选

我有一个可以创建不同类型文档的系统。最初,我对每个文档都有一个新的模型,但我不认为这是最好的方法,因为它会很快变得混乱。所以我想做的是建立一个通用的文档模型,并从中生成单个文档。我已经想出了以下类型的设计

所以一个文档可以有一个文档a和一个文档B。每个项目只能创建一次DocumentA和DocumentB,这就是为什么我有这种关系。现在,每个文档的每个表单都有一个上载按钮,支持文档可以与生成的文档一起上载。因此,文档可以进行一对多文件上传

这就是我困惑的地方。有人访问我的门户并选择创建文档的选项。现在向他们显示一个表单,如下所示

因此,他们输入文档数据,上传支持文档,然后单击提交

现在我在考虑如何在Laravel内部处理这个问题

据我所知,情况如下

public function store(Request $request, Project $project)
{
    $document = new Documents();
    $document->documentName = 'Something';
    $document->documentA = new DocumentA();
    $document->documentA->startDate = Input::get('startDate');
    $document->documentA->endDate = Input::get('endDate');
    $document->documentA->notes = Input::get('notes');

    if (Input::hasFile('filePath')) {
        $files = Input::file('filePath');
        foreach($files as $file) {
            $fileString = "";
            $file->move(public_path('uploads'), $file->getClientOriginalName());

            $fileString .= public_path('uploads') . '/' . $file->getClientOriginalName();

            $document->fileUpload = new FileUploads();
            $document->fileUpload->filename = $file->getClientOriginalName();
            $document->fileUpload->mime = $file->getClientOriginalExtension();
            $document->fileUpload->filepath = $fileString;
            $document->fileUpload->documentId = $document->id;
        }
    }

    $document->save();

    return Redirect::route('projects.documentA.edit', compact('project', 'documents'));
}
真的,我在寻找关于我是否正确设计这个的建议,以及我是否在Laravel中正确处理它的建议。我将得到许多不同的文档,每个文档都接受不同的输入

谢谢你的建议


谢谢

您想为每个文档创建不同的表吗?就像你在上面为A和B展示的那样,它会变得混乱。为什么不在一个表中使用一些标识符来管理它呢

若您为文档创建一个表,为文件上传创建一个表,那个么您将像这样在它们之间创建关系
文件上传模型

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class File extends Model
{
    /**
     * each file belongs to a document
     */
    public function document()
    {
        return $this->belongsTo('App\Document', 'foreign_key', 'primary_key');
    }
}

是否要为每个文档创建不同的表?就像你在上面为A和B展示的那样,它会变得混乱。为什么不使用一些标识符列在一个表中管理它呢?您找到过解决方案吗?我现在需要一个:输入数据。理想情况下,我只需要一个文档模型。我唯一搞不清楚的是每个文档都有不同的输入,那么我该如何处理呢?谢谢
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Document extends Model
{
    /**
     * document has multiple files
     */
    public function files()
    {
        return $this->hasMany('App\File', 'foreign_key', 'primary_key');
    }
}
$documents->files()->where('id', 1)->get();
//gives file associated with document id 1