首页 > 解决方案 > Laravel(如何将数据添加到数据库)

问题描述

这是我的代码,显示分配给用户的项目。

家庭控制器

public function index()
{
    $companies = auth()->user()->companies;
    $projects  = Project::whereIn('company_id',$companies->pluck('id'))->get();

    return view('home',compact('companies','projects'));
}

主页.blade.php

@forelse($projects as $project)
    <a href="{{ route('issues.show', $project->id) }}" class="text-xl font-bold m-5 text-white">{{$project->title}}</a>
                
@empty
    <p>No Projects</p>
@endforelse

ProjectController 显示项目中的问题。

public function show($id){
      $project = Project::findOrFail($id);

    $issues = $project->issues;
    return view('issues', compact('issues', 'project'));
}

路线:

Route::get('/issues/{id}', [\App\Http\Controllers\ProjectController::class, 'show'])->name('issues.show');

问题.blade.php

@forelse($issues as $issue)
    <a href="" class="text-xl font-bold m-5 text-white">{{$issue->title}}</a>
@empty
    <p>No Issues</p>
@endforelse

我在问题页面中创建了一个按钮,该按钮显示了一个模式,该模式具有为所选项目添加问题的表单。你能帮我解决这个问题吗?关于如何做到这一点?

标签: phplaravel

解决方案


假设您有这样的项目控制器。

public function show($id){
    $project = Project::findOrFail($id);

    return view('issues', compact('project'));
}

您不必将问题传递给刀片。您可以在那里轻松打印。

你的刀片

<table>
@foreach($project->issues as $issue)
   <tr>
      <td>{{ $issue->name }}</td>
   </tr>
@endforeach
</table>

您在刀片中的弹出窗口中的表单

<form action="#" method="POST">
   <input name="project_id" type="hidden" value="{{ $project->id }}"/>
   <!-- all inputs you need -->
</form>

所以我们做了什么。您将项目 ID 粘贴到隐藏输入中的表单中。所以现在,在表单提交后,您project_id在请求中调用了后端输入。

在您的问题控制器中

public function show(Request $request){
    dd($request->project_id); //there is your project_id 
}

可能您project_id的问题中有专栏。所以你可以用$issue->associate($project_id). 这只是一个例子!!

我不知道您需要在问题中保存的其他字段,所以我无法为您提供更多帮助。我想你已经拥有了制作草稿所需的一切。:)

总帐


推荐阅读