【问题标题】:how can i display my records from database in datatables using laravel如何使用 laravel 在数据表中显示数据库中的记录
【发布时间】:2019-04-16 18:18:48
【问题描述】:

我正在使用 laravel 5.8,有 2 天我在进行一些搜索以及如何在数据表中检索和显示数据但没有结果

//这是我的控制器文件的一部分代码

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Datatables;


use Auth;
use App\User;

class UserController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */

public function __construct()
{
    $this->middleware('auth');
}

    public function index()
    {

         $user =Datatables::of(User::query())->make(true);

        return view('manage_users.index', ['users' => $user]);
    }

    /**

以及html页面和脚本的代码

<script src="//code.jquery.com/jquery-1.12.3.js"></script>
<script src="//cdn.datatables.net/1.10.12/js/jquery.dataTables.min.js"></script>
<script
    src="https://cdn.datatables.net/1.10.12/js/dataTables.bootstrap.min.js"></script>
<link rel="stylesheet"
    href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<link rel="stylesheet"
    href="https://cdn.datatables.net/1.10.12/css/dataTables.bootstrap.min.css">

<link href="styles/vendor/AdminLTE/css/datatables/dataTables.bootstrap.css" rel="stylesheet" type="text/css" />
<link href="bower_components/datatables-responsive/css/dataTables.responsive.css" rel="stylesheet" type="text/css" />

<table id="table" class="table table-bordered table-striped dataTable">
  <thead>
      <tr>
        <th class="th-sm">ID</th>
        <th class="th-sm">Name</th>
        <th class="th-sm">Email</th>
        <th class="th-sm">Type user</th>

      </tr>
    </thead>
    <tbody>



  </tbody>
  <tfoot>
    <tr>
      <th>Id
      </th>
      <th>Name
      </th>
      <th>Email
      </th>
      <th>Type user
      </th>

    </tr>
  </tfoot>
</table>

<script>
         $(document).ready(function() {
    $('#table').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": "../server_side/scripts/server_processing.php"
    } );
} );
         </script>

我得到空表,出现这样的 ajax 错误: DataTables 警告:table id=table - Ajax 错误。有关此错误的更多信息,请参阅http://datatables.net/tn/7

【问题讨论】:

    标签: jquery laravel datatables


    【解决方案1】:

    你做错了几件事。

    1. 你没有返回你的数据表
    2. 您尚未在 jquery 数据表中设置列

    关注这个。

    在你的控制器上

    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use Illuminate\Support\Facades\Hash;
    use Datatables;
    use Auth;
    use App\User;
    
    class UserController extends Controller
    {
        /**
         * Display a listing of the resource.
         *
         * @return \Illuminate\Http\Response
         */
    
    public function __construct()
    {
        $this->middleware('auth');
    }
    
        public function index()
        {
    
             $user =User::get();
    
            return view('manage_users.index', compact('user'));
        }
    
    
        public function returnAjaxData()
        {
             $users =User::get();
             return Datatables::of($users)->make(true);
         }
        /**
    
    • 返回数据表后,在您的路线上设置您的 ajax 路线
    • 使用 get 方法添加一条通往 returnAjaxData() 函数的路由
    • 之后,只需使用该路由在您的 Jquery 中获取数据 下面
    • 然后还提到数据表jquery上的列,如下所示

      <script>
      $(document).ready(function() {
      $('#table').DataTable( {
          "processing": true,
          "serverSide": true,
          "ajax": "url/route/to/returnAjaxData",
           "columns":[
      
          { "data": "id" },
          { "data": "name" },
          { "data": "email" },
          { "data": "type_user" },
      } );
      } );
      </script>
      
    • 请记住,列数据是来自您的数据库的字段。

    • 还要记得更改“url/route/to/returnAjaxData”上方的Ajax url

    按照前面的示例创建一个路由:

    Route::get('user', array('as' => 'get.user', 'uses' => 'UserController@returnAjaxData'));
    

    将 ajax url 替换为 "ajax": "/user",

    【讨论】:

    • 我得到一个 json 响应,其中包含我在用户路由中需要的所有数据,但我的数据表设置在此路由 manage_users/index 它是空的
    • 我收到一个响应,其中包含我在用户路由中需要的所有数据,当服务器端默认为 true 时,它​​看起来像这样,但我的数据表在此路由 manage_users/index 中设置为空。响应是这样的 {"draw":0,"recordsTotal":10,"recordsFiltered":10,"data":[{"id":"23","name":"oussama AMMY DRISS","email" :"admin1@gmail.com","user_type":"Administrateur","created_at":"2019-04-01 10:49:32","updated_at":"2019-04-09 16:17:47" },{"id":"24","name":"responsable","email":"responsable@gmail.com","user_type":"Responsable","created_at":"2019-04-01 。 .....}],"输入":[]}
    • 最重要的是你需要返回数据表。请理解这一点。您正在返回视图并通过 JQUERY 调用它。以上只是为了说明。您还需要指定列名以及您在表格中设置的表格行
    • 如果您的数据表设置在该路由中,您需要更改索引路由并创建一个返回数据表的新路由。现在您正在返回包含用户数据的视图
    • 你改过ajax的url了吗?这导致 returnAjaxData() 方法
    猜你喜欢
    • 2014-11-29
    • 1970-01-01
    • 2014-06-23
    • 2020-09-20
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    相关资源
    最近更新 更多