【发布时间】:2015-12-18 22:11:39
【问题描述】:
我有一个系统,您可以在其中创建不同类型的文档。最初,我为每个文档都有一个新模型,但我认为这不是最好的方法,因为它会很快变得混乱。所以我想做的是制作一个通用的 Documents 模型,并让单个文档来自这个模型。我想出了以下类型的设计
所以一个 Document 可以有一个 DocumentA 和一个 DocumentB。 DocumentA 和 DocumentB 每个项目只能创建一次,这就是我有这种关系的原因。现在,每个文档的每个表单都有一个上传按钮,支持文档可以与生成的文档一起上传。所以 Documents 可以有一对多的 FileUploads。
这就是我困惑的地方。有人访问我的门户并选择创建 DocumentA 的选项。现在向他们显示一个类似于以下内容的表单
于是他们为 DocumentA 输入数据,上传支持文件,然后点击提交。
现在我正在考虑如何在 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 一样。它会变得混乱。为什么不使用一些标识符 col 在一个表中管理它?
-
您找到解决方案了吗?我现在需要一个:D
标签: model-view-controller database-design laravel-5