我是Laravel编程的新手,现在我想用普通的PHP从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 :(得分:1)
您正在使用类型提示:
{{getClientName(job)}}
所以当你这样做时:
... (Project $project) { ...
你真的在说“projectId等于这个对象”。
您有两种选择。要么1)不要使用类型提示:
DB::table('pics')->where('projectId', '=', $project)->delete();
或2)正确使用类型提示:
Route::delete('/project/{project}', function ($project) {
DB::table('pics')->where('projectId', '=', $project)->delete();
$project -> delete();
return redirect('/');
});
答案 1 :(得分: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