繁体   English   中英

来自控制器的 Laravel 过滤器数据库

[英]Laravel filter database from controller

我正在尝试使用<option>在我的视图中制作用于索引的简单过滤器。 默认情况下,索引视图将显示所有数据,但我想让视图根据我制作的过滤器显示数据并将其显示在同一页面中。

这是索引(包括<option> )视图

<form method="get" action="/">
  <select name="tag" id="tag_select">
      <option value=""> -pilih- </option>
      <option value="diproses">diproses</option>
      <option value="selesai">selesai</option>
  </select>
    <script src="{{ asset('js/tag.js') }}" charset="utf-8"></script>
      <input type="submit" name="submit" value="cek">
    {{csrf_field()}}
    <input type="hidden" name="_method" value="get">
  </form>

<?php foreach ($blogs as $blog ): ?>
   <tr><td><b>Tanggal: </b></td><td>{{ $blog -> created_at}}</td><br>
   <tr><td><b>SI: </b></td><td>{{ $blog -> sistem}}</td><br>
   <tr><td><b>Subjek:</b></td><td><a href="/{{ $blog -> id}}"> {{ $blog -> title }}</a></td></tr> 
   <br>
   <tr><td><b>Oleh: </b></td><td>{{ $blog -> nama}}</td></tr> <br>
   <tr><td><b>Status: </b></td><td>{{ $blog -> tag}}</td></tr> <br> // i want to filter the data based on this
   <hr>
   <?php endforeach; ?>

这是过滤方法

public function filter(Request $request)
{

  $blogs = DB::table('blogs')->where('tag', $request -> tag)->get();
  return view('koding', ['blogs' => $blogs]);

}

另外这是我的索引控制器及其路线

Route::get('/admin', 'HomeController@admin')->name('admin');

.

  public function admin()
{
  $blogs = blog::paginate(10);
  return view('koding', ['blogs' => $blogs]);
}

你们能告诉我什么地方出了问题吗?过滤方法的路线是什么? 谢谢

你可以试试

public function admin(Request $request)
{
  $blogs = blog::when($request->tag, function ($query, $tag) {
    return $query->where('tag', $tag);
  })->paginate(10);
  return view('koding', ['blogs' => $blogs]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM