Php 当管理员在我的视图中批准时,我应该如何显示数据

Php 当管理员在我的视图中批准时,我应该如何显示数据,php,laravel,Php,Laravel,我对laravel不熟悉,我正在创建批准/拒绝的候选人。现在我正在申请批准。我有“general.blade.php”,其中显示了所有待处理列表。然后,当管理员批准所选的候选人时,它会将数据传递给我称为“Approved.blade.php”的新刀片服务器。然而,就我而言。当我点击一个候选者时,它会将所有候选者列表传递给新刀片,无论是挂起还是批准 CandidateController.php public function postApprove($id) { $candidates

我对laravel不熟悉,我正在创建批准/拒绝的候选人。现在我正在申请批准。我有“general.blade.php”,其中显示了所有待处理列表。然后,当管理员批准所选的候选人时,它会将数据传递给我称为“Approved.blade.php”的新刀片服务器。然而,就我而言。当我点击一个候选者时,它会将所有候选者列表传递给新刀片,无论是挂起还是批准

CandidateController.php

public function postApprove($id)
 {
    $candidates = GeneralForm::where('id', '=', e($id))->first();
    if($candidates)
    {
        $candidates->status = 1;
        $candidates->save();
        $candidates=GeneralForm::where('status' , '1')->get();
        $menu = Menu::get();
        $current_menu = 2;
        $candidates = GeneralForm::latest()->paginate(5);
        return view('approve', compact('candidates', 'menu', 'current_menu'));}
        <tbody>@foreach ($candidates as $candidate)
            <tr class="intro-x">
                <td class="w-40">
                    <div class="font-medium whitespace-no-wrap">{{ $candidate->fullname }}</div> 
                </td>
                <td class="w-40">
                    <div class="font-medium whitespace-no-wrap">{{ $candidate->email }}</div> 
                </td> </tbody>@endforeach
general.blade.php *这是我的按钮,管理员可以批准候选人*

 <a class="flex items-center " href="{{route('application',['id'=>$candidate->id])}}"> <i data-feather="user-check" class="w-4 h-4 mr-1"></i> Accept </a>

我得到的是,每当我单击一个候选人时,它都会将我重定向到approval.blade.php。然而,它向我展示了整个列表,包括待定的。我希望它只显示批准的候选人。我的数据库数据工作正常,只是我的视图不正常。有人能告诉我哪个部分错了吗?

您使用
$candidates=GeneralForm::latest()->paginate(5)得到5个候选项并将该数据传递给视图。由于您只需要一名候选人,因此应按如下方式更新代码:

public function postApprove($id)
{
    $candidate = GeneralForm::find($id);
    $candidate->status = 1;
    $candidate->save();
    $menu = Menu::get();
    $current_menu = 2;
 
    return view('approve', compact('candidate', 'menu', 'current_menu'));
}
  • GeneralForm::where('id','=',e($id))->first()可以缩短为
    通用格式::查找($id)
  • 删除了行
    $candidates=GeneralForm::where('status','1')->get()$candidates=GeneralForm::latest()->paginate(5)覆盖无论如何
  • $candidates
    重命名为
    $candidate
    ,以反映只有一项
然后在您看来,您可以去掉
@foreach…
,因为我们只有一个项目要显示:

<tbody>
  <tr class="intro-x">
    <td class="w-40">
      <div class="font-medium whitespace-no-wrap">{{ $candidate->fullname }}</div> 
    </td>
    <td class="w-40">
      <div class="font-medium whitespace-no-wrap">{{ $candidate->email }}</div> 
    </td>
  </tr>
</tbody>

{{$candidate->fullname}
{{$candidate->email}
  • 删除了
    @foreach
    ,因为我们只有一个项目要显示

刚刚意识到显示的代码已经是用于显示一个候选者的代码<代码>一般形式::其中('id','=',e($id))->first()可以缩短为
通用格式::查找($id)
。如果您只需要一名候选人,我还建议使用
$candidate
而不是复数
$candidates
<代码>$candidates=GeneralForm::latest()->paginate(5)
将为您提供5件物品,不确定为什么会有,因为您只需要一件。非常感谢!!是$candidates=GeneralForm::latest()->paginate(5);是那个误会我的人吗@brombeery不客气,很高兴它能起作用。我还有一个问题我刚才忽略了。当管理员单击approve按钮时,它将显示approve.blade.php和一个候选者(这是正确的)。但是,当我试图点击我的侧导航时,我的approve.blade.php再次显示了所有的候选者。我的菜单数据库有问题吗?我不知道你的侧边栏包含什么以及为什么失败,需要更多的信息。你的侧边栏里也有候选人名单吗?我知道了,这和我的控制器有关。我忘了更改显示已批准的数据库代码。我的错,对不起!没问题;)
<tbody>
  <tr class="intro-x">
    <td class="w-40">
      <div class="font-medium whitespace-no-wrap">{{ $candidate->fullname }}</div> 
    </td>
    <td class="w-40">
      <div class="font-medium whitespace-no-wrap">{{ $candidate->email }}</div> 
    </td>
  </tr>
</tbody>