2016-01-04 32 views
0

我有一個系統,您可以在其中創建不同類型的唯一文檔。例如,一個文件被稱爲項目識別,這需要某些輸入。最初,我爲每個獨特的文檔類型都有一個數據庫表,但是這個問題變得非常混亂。所以,我創建了一個更通用的數據庫結構,並且提出了以下內容 Database designLaravel 5 - 通用文檔管理

所以,我創建了一個項目。在項目展示頁面中,我可以選擇要創建的文檔類型,例如

<li>{!! link_to_route('projects.documents.create', 'Project Identified', array($project->id, 'documentType' => 'projectIdentified')) !!}</li> 

現在,如果我選擇創建一個Project Identified文檔,它使用通用文檔控制器來處理事情。由於路由的鏈接有一個documentType參數,我可以從url中獲取這個值。因此,在我的文檔控制器創建功能,我做以下,以顯示正確的視圖文檔

public function create(Project $project) 
{ 
    $documentType = $_GET["documentType"]; 

    if($documentType == "projectIdentified") { 
     return View::make('projectIdentifiedDoc.create', compact('project')); 
    } 
} 

這種觀點有其綁定

{!! Form::model(new App\Document, [ 
    'class'=>'form-horizontal', 
    'route' => ['projects.documents.store', $project->id] 
]) !!} 

然而,文檔中的表格控制器存儲功能,我再次需要獲取documentType。我怎樣才能在表單模型中通過這個?此外,這是做到這一點的正確方法,還是有一種更有效的方法?

謝謝

回答

1

您是否閱讀過有關關係的文檔?

https://laravel.com/docs/5.2/eloquent-relationships

您需要定義模型中的關係。

所以,如果一個文檔只有一個documentType,你的文檔模型中,您將定義

public function documentType() 
{ 
    return $this->hasOne('App\documentType'); 
} 

不同類型的關係,如何定義它們,然後如何訪問數據,是所有非常有據可查。