2016-08-11 19 views
0

我是新來的Laravel編程,現在我想在純PHP 2個表(項目和圖片),我可以做到這一點刪除參數:傳遞的形式發送到CONTROLER在Laravel 5.2

刪除從項目的項目:

$sql1 = delete * from projects where project_id = 1; 

刪除他的所有照片

$sql2 = delete * from pictures where project_id = 1; 

我想這樣做,在我這裏route.php是我的代碼

Route::delete('/project/{project}', function (Project $project) { 
    DB::table('pics')->where('projectId', '=', $project)->delete(); 
    $project -> delete(); 
    return redirect('/'); 
}); 

我能夠刪除項目,但不是它的圖片?

我該怎麼辦?

+0

Laravel自動構建從ID的'$ project'對象,所以如果你想使用id來刪除它,你必須從'Project'對象'$項目檢索 - > id'。此功能稱爲路由器模型綁定https://laravel.com/docs/5.2/routing#route-model-binding – 0x13a

回答

1

您使用類型提示:

... (Project $project) { ... 

所以,當你這樣做:

DB::table('pics')->where('projectId', '=', $project)->delete(); 

你真的說:「這裏專案編號等於這個對象」。

您有兩種選擇。無論是1)不使用類型提示:

Route::delete('/project/{project}', function ($project) { 
    DB::table('pics')->where('projectId', '=', $project)->delete(); 
    $project -> delete(); 
    return redirect('/'); 
}); 

或2)利用類型正確提示:

Route::delete('/project/{project}', function (Project $project) { 
    DB::table('pics')->where('projectId', '=', $project->id)->delete(); 
    $project -> delete(); 
    return redirect('/'); 
}); 
+0

非常感謝你現在正在像魅力工作 –

0

這麼好,我想更多的加入到以前的答案,只是說爲什麼就是這樣。

你可以做這裏只是

Route::delete('/project/{project}', function (Project $project) { 
    DB::table('pics')->where('projectId', '=', $project->id)->delete(); 
}); 

這是因爲Laravel構建自動使用其ID的$project對象,所以如果你想使用id來刪除它,你必須從檢索Project對象$project->id

此功能稱爲路線模型綁定

Laravel路徑模型,結合提供了一種便捷的方式來注入模型實例到你的路線。例如,您可以注入與給定ID匹配的整個Project模型實例,而不是注入用戶的ID。

查看更多https://laravel.com/docs/5.2/routing#route-model-binding