在 Laravel 的页面上应用过滤器后获取表格上的数据

Posted

技术标签:

【中文标题】在 Laravel 的页面上应用过滤器后获取表格上的数据【英文标题】:Get data on table after applying filters on page in Laravel 【发布时间】:2021-09-02 13:12:28 【问题描述】:

我在页面上有一个表,我可以从数据库中获取数据并将其加载到表中。现在我想在同一页面上创建应用过滤器选项,并且表中的数据应该被过滤帐户以应用过滤器。我是 Laravel 和 php 的新手,所以尝试了多个选项来过滤可以使用 ajax 完成的找到的选项,jquery 也尝试过,但没有运气。 这是我的示例刀片模板,我可以从列中获取不同的值并将其加载到下拉列表中,但我想要做的是单击应用按钮,表下的数据应根据过滤器进行更新。

@section('content')
<div class="content">
<div class="row">
  <div class="col">
    <div class="form-group">
      <label>Business Unit</label>
      <div class="select2-purple">
        <select class=" multiple="multiple" data-placeholder="Business Unit" data-dropdown-css-class="select2-purple" name="Business_unit" id="Business_unit" style="width: 100%;">
          @foreach($Business_unit as $bu)
          <option>  $bu->Business_Unit  </option>
          @endforeach
        </select>
      </div>
    </div>
  </div>
<div class="col">
  <div class="form-group">
    <label>Org Level 1</label>
    <div class="select2-purple">
      <select class=" multiple="multiple" data-placeholder="Org Level 1" data-dropdown-css-class="select2-purple" name="Orglevel1" id="Orglevel1" style="width: 100%;">
        @foreach($Org_level1 as $org1)
        <option>  $org1->Orglevel1  </option>
        @endforeach
      </select>
    </div>
  </div>
</div>
<div class="col">
  <div class="form-group">
    <label>Org Level 2</label>
    <div class="select2-purple">
      <select class=" multiple="multiple" data-placeholder="Org Level 2" data-dropdown-css-class="select2-purple" style="width: 100%;">
        @foreach($Org_level2 as $org2)
        <option>  $org2->Orglevel2  </option>
        @endforeach
      </select>
    </div>
 </div>
</div>
<div class="col">
  <div class="form-group">
    <label>Region</label>
    <div class="select2-purple">
      <select class=" multiple="multiple" data-placeholder="Region" data-dropdown-css-class="select2-purple" style="width: 100%;">
        @foreach($Region_select as $reg)
        <option>  $reg->Region  </option>
        @endforeach
      </select>
    </div>
  </div>
</div>
<div class="col">
  <button class="btn btn-primary rounded" type="submit" id="search" name="search">Apply</button>
</div>
</div>

<div class="card">
  <div class="card-header">
    <h3 class="card-title"><b>Employees at High Attrition Risk</b></h3>
  </div>
  <div class="card-body p-0">
    <table class="table table-bordered table-striped" style="font-size:small;" id="example2">
        <thead>
            <tr>
                <th style="width: 10%">
                    Employee ID
                </th>
                <th style="width: 10%">
                    Role
                </th>
                <th style="width: 10%">
                    Region
                </th>
                <th style="width: 12%">
                  Org Level1
                </th>
                <th style="width: 12%">
                   Org Level2
                </th>
                <th>
                   Risk Level
                </th>
                <th>
                   Performance
                </th>
                <th style="width: 10%">
                </th>
            </tr>
        </thead>
        
        @foreach($Memberdetails_list as $d)
            <tr>
            <td>
                <a href="/Memberdetails/ $d->id "> $d->membersid </a>
            </td>
            <td>
                $d->Role
            </td>
            <td>
                $d->Region
            </td>
            <td>
                 $d->Orglevel1
            </td>
            <td>
                 $d->Orglevel2
            </td>
            <td>

这是我的 Memeberdetails 控制器,它是一个资源控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Memberdetails;
use App\Models\Attrition_correlators;
class MemberdetailController extends Controller

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function __construct()
    
        $this->middleware('auth');
    
    public function index()
    
        $Memberdetails= new Memberdetails;
        $Memberdetails_list= $Memberdetails::all();
        $Business_unit = Memberdetails::distinct('Business_Unit')->get(['Business_Unit']);
        $Org_level1 = Memberdetails::distinct('Orglevel1')->get(['Orglevel1']);
        $Org_level2 = Memberdetails::distinct('Orglevel2')->get(['Orglevel2']);
        $Region_select = Memberdetails::distinct('Region')->get(['Region']);
        return view('admin.members.Datapoints',compact('Memberdetails_list','Business_unit','Org_level1','Org_level2','Region_select'));
    

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    
        //
    

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    
        //
    

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show(Memberdetails $Memberdetail)
    
        $Attrition_correlator = Attrition_correlators::all();
        return view('admin.members.Detailspage',compact('Memberdetail','Attrition_correlator'));
    

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    
        //
    

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    
        //
    

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    
        //
    
    

这是我的 web.php

Route::resource('/Memberdetails', MemberdetailController::class);

下面是我的迁移

 public function up()
    
        Schema::create('memberdetails', function (Blueprint $table) 
            $table->id();
            $table->string('membersid');
            $table->string('Role');
            $table->string('Orglevel1');
            $table->string('Orglevel2');
            $table->string('Region');
            $table->string('Professional_clas');
            $table->string('Performance');
            $table->string('Probablity');
            $table->string('Riskzone');
            $table->string('Manager');
            $table->string('Topcorrelators');
            $table->string('Local_Expat');
            $table->string('Role_Seniority');
            $table->string('HR_Region');
            $table->string('Gender');
            $table->string('Marital_Status');
            $table->string('Business_Unit');
            $table->string('Total_Working_years');
            $table->timestamps();
        );
    

我想知道我可以做些什么来使过滤器正常工作,以及我怎样才能在业务部门上级联 Orgleve1 和 Orgleve2..这意味着当我选择业务部门相关的 Org 级别 1 和 Orglevel2 时应该填充下拉列表并且过滤器应该。 任何帮助都会真正帮助我 提前致谢!

【问题讨论】:

【参考方案1】:

请按照以下教程了解有关根据依赖项获取数据或过滤的一些想法

https://www.google.com/amp/s/investmentnovel.com/laravel-dependent-dropdown-tutorial-with-example/amp/

【讨论】:

感谢@tayyab 的帮助....我也尝试过这个,但我的问题是我在一个表中拥有所有数据以及多个业务部门条目和其他条目,除了 memberid 是独特的..我如何为提到的 senario 做到这一点?

以上是关于在 Laravel 的页面上应用过滤器后获取表格上的数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.5 中将数据插入表格并获取电子邮件通知?

在页面内部内容后添加或触发事件

如何在 laravel 视图的输出上应用 xss 过滤器?

Laravel 复选框过滤器 ajax

如何从两个不同的 Laravel 查询构建器中获取我的两个结果集以同时显示在同一页面上?

如何在实时 Firebase 数据库上侦听以通过后端 laravel 和 websocket 动态获取数据,而不使用 javascript