2015-12-02 84 views
1

我正在看這篇教程: http://laravel.com/docs/master/quickstart-intermediate#creating-the-tasklaravel 5 - 在控制器方法中創建一個新「東西」

但不是盲目追隨它,我試圖讓它與我的需求相關。我遇到了一個問題。我正在查看此代碼:

/** 
* Create a new task. 
* 
* @param Request $request 
* @return Response 
*/ 
public function store(Request $request) 
{ 
    $this->validate($request, [ 
     'name' => 'required|max:255', 
    ]); 

    $request->user()->tasks()->create([ 
     'name' => $request->name, 
    ]); 

    return redirect('/tasks'); 
} 

好的。所以在我的應用程序中我想創建一個國家。沒有用戶與它關聯,它只是一個表單將國家名稱發佈到此路線。我的形式通過了驗證,如果我使用下面的代碼,我可以在新的國家記錄保存到我的數據庫:

如果我代替

$request->user()->tasks()->create([ 
     'name' => $request->name, 
    ]); 

與...

$country = new Country; 
$country ->name = $request->name; 
$country ->save(); 

..那麼這可以解決問題。雖然我不想要這個。

我想要做的是使用類似於教程中的代碼。 任何人都可以告訴我我該怎麼做嗎?

我試了幾次不同的猜測,但沒有運氣。他們正是那樣的。猜...

謝謝。

DS

回答

1

您在教程中看到的代碼可以概括爲「爲給定用戶創建任務」。創建任務對象,可以在本教程中看到的方式是可行的,因爲有用戶任務模型之間建立的關係 - ()見任務用戶方法。這就是爲什麼你可以給$用戶類用戶的對象,調用$用戶>任務() - >創建() - 結果類任務的對象將被創建並自動鏈接到該用戶。

如果你想創建類國家以同樣的方式對象,需要有國家和用戶之間形成的關係 - 但是當它在任務的情況下才有意義(用戶都有自己的任務),它不聽起來像你的應用程序中的東西(用戶有他們自己的國家?)。

+0

Hi @jedrzej - 感謝您的評論。是的,在環顧四周之後,我意識到似乎並沒有比這更好的方法來做到這一點:$ country = Country :: create($ request-> only('name'));這對我的需求很好。感謝您花時間發表您的想法。 – dstewart101

相關問題