2016-02-23 21 views
0

我有一個名爲name="step[]"的動態輸入字段。當提交表單並顯示$request->step用dd,我得到這個:Laravel 5動態輸入字段保存與數據庫的關係

array:3 [ 
    0 => "Test Step 1" 
    1 => "Test Step 2" 
    2 => "Test Step 3" 
] 

所以它是一個數組。現在,當我想用​​插入數據:

$project = new Project; 

    $project->name = $request->name; 

    $project->save(); 

    $project->steps()->saveMany($request->step); 

我收到此錯誤:

Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, string given 

項目型號:

public function steps() 
{ 
    return $this->hasMany('App\Step'); 
} 

我的目標是創建一個新的Project和將其保存到數據庫中,並將所有steps保存在我的Step表中。所以每個項目都有很多步驟。不知道爲什麼我得到上述錯誤雖然,因爲我傳遞數組?

+1

'array' yes。模型的「數組」,沒有。 '$ project-> steps() - > saveMany(/ **期望的模型數組* /)'。 –

+0

謝謝,現在我明白了:) – Hardist

回答

1

我通常使用foreach循環來實現。你的關係方法似乎看起來不錯。這是否工作?

foreach($request->steps as $step) { 
    $project->steps()->create(['step' => $step]); 
} 
+0

這在同時工作:)我想做一些事情,而不使用foreach,但自從大衛巴克向我指出爲什麼我得到錯誤,我可以努力實現我想要的:) – Hardist

+0

好吧,很高興我能幫上忙。乾杯。 – Ben

0

您是否嘗試過使用attach方法?

$project->steps()->attach($resquest->input('steps'));