2016-01-06 84 views
1

顯示不同的看法,我有以下的數據庫設計 Database designLaravel 5 - 基於數據庫查詢

我有幾個不同的文件我希望用戶能夠創建。每個文檔都有自己的創建文檔或編輯的視圖。

如果他們正在創建的文檔已經被創建,他們應該會看到該文檔的編輯頁面。

此刻,我有以下

public function create(Project $project) 
{ 
    $documentTypesCreated = 
     $project->document() 
      ->join('document_type', 'documents.id', '=', 'document_type.documentId') 
      ->select('document_type.documentId', 'document_type.name') 
      ->get(); 

    $documentLink = $_GET['documentType']; 

    if($documentTypesCreated->isEmpty()){ 
     return View::make($documentLink.'Doc.create', compact('project')); 
    } else { 
     foreach($documentTypesCreated as $documentName) { 
      if($documentName->name != $documentLink) { 
       return View::make($documentLink.'Doc.create', compact('project')); 
      } else { 
       $document = Document::find($documentName->documentId); 
       return View::make($documentLink.'Doc.edit', compact('project', 'document')); 
      } 
     } 
    } 
} 

打破這件事,我做了以下內容: 首先,我得到已爲項目

創建的所有文件

然後我得到用戶正在嘗試從URL創建的文檔

$documentLink = $_GET['documentType']; 

因此可以說,查詢返回此項目有 DocumentA DocumentB

而documentLink顯示我正在嘗試創建DocumentB。

由於DocumentB已經創建,我需要該文檔的編輯頁面。首先,我檢查,如果該查詢返回和文檔

if($documentTypesCreated->isEmpty()){ 
    return View::make($documentLink.'Doc.create', compact('project')); 
} else { 

} 

如果它沒有,它會顯示所選文件的創建頁面。如果這樣做了,else語句就會一命嗚呼。 在else語句,我遍歷所有文檔的查詢返回

foreach($documentTypesCreated as $documentName) { 

} 

我然後進行以下操作,而這正是我的邏輯是失敗

if($documentName->name != $documentLink) { 
    return View::make($documentLink.'Doc.create', compact('project')); 
} else { 
    $document = Document::find($documentName->documentId); 
    return View::make($documentLink.'Doc.edit', compact('project', 'document')); 
} 

如果查詢中的文檔名稱與我嘗試創建的文檔不相同,則顯示該文檔的創建頁面。否則,我會顯示編輯頁面。

現在讓我們回到我選擇DocumentB的地方。我知道我已經創建了這個文檔,所以我應該看到它的編輯頁面。然而,由於文獻展是在查詢返回的第一個結果,上面的語句如下所示

if("DocumentA" != "DocumentB") { 
    return View::make($documentLink.'Doc.create', compact('project')); 
} else { 
    $document = Document::find($documentName->documentId); 
    return View::make($documentLink.'Doc.edit', compact('project', 'document')); 
} 

所以它要顯示DocumentB的創建頁面,而不是編輯頁面。如果DocumentB是返回的第一個結果,那麼將顯示編輯頁面。

我希望這是有道理的。我怎樣才能讓它顯示文檔的正確視圖?

感謝

+0

讓我知道如果我的回答幫助:)! – ihue

+0

嗨,我從那以後取得了一些進展,所以我已經更新了原來的問題,以便我在哪裏遇到困難。謝謝您的幫助 –

回答

1

控制器

此基礎上查詢 - 你可以手動設置這些變量

$create = true; 
$edit = false; 

邏輯

if ($query == 'any logic') { 
    $create = true; 
    $edit = false; 
}else{ 
    $create = false; 
    $edit = edit; 

} 

然後,在將它們發送到您的看法。


查看

@if($create == true) 

//.. Show Create Form 

@else 

// .. Show Edit Form 

@stop 

然後,你的觀點會令你的基礎查詢結果。我希望這有助於!