【问题标题】:Laravel working with data for datatablesLaravel 处理数据表的数据
【发布时间】:2016-10-20 16:41:21
【问题描述】:

我有一个 UsesController,目前看起来如下所示,我正在尝试找出最适合我处理数据中所有大量数据的方法。截至目前,我只是从我的数据库中检索所有用户并将其传递给我的视图,然后在 foreach 循环中循环数据,在我的 HTML 表中创建一个新的表行。然后在我的 javascript 中将表初始化为数据库表。走这条路有什么缺点吗?或者我应该把它变成某种 API,或者什么样的建议对我有帮助。

<?php

use MyApp\Services\UserCreatorService;

class UsersController extends BaseController {

    protected $userCreator;

    public function __construct(UserCreatorService $userCreator)
    {
        parent::__construct();
        $this->userCreator = $userCreator;
        $this->beforeFilter('role:Administrator.Owner');
    }

    /**
    * Display a listing of users
    *
    * @return Response
    */
    public function index()
    {
        // Retrieve all users from database with roles and statuses
        $users = User::with('role')->with('status')->get();

        // Return a view to display all users by passing users variable to view.
        return View::make('users.index', compact('users'));
    }
}

<table class="table table-striped table-bordered responsive resourceTable">
    <thead class="">
        <tr>
            <th class="center">ID</th>
            <th>Name</th>
            <th>Email Address</th>
            <th>Username</th>
            <th>Role</th>
            <th>Status</th>
            <th class="nosortable center">Actions</th>
        </tr>
    </thead>

    <tbody>
        @foreach($users as $user)
            <tr>
                <td class="center">{{ $user->id }}</td>
                <td>{{ $user->getFullName() }}</td>
                <td>{{ $user->email_address }}</td>
                <td>{{ $user->username }}</td>
                <td>{{ $user->role->role_name }}</td>
                <td>{{ $user->status->status_name }}</td>
                <td class="center">
                    <!-- TODO: Figure out how to make a function with actions td.-->
                    @if ( $user->role['id'] < $currentUser->role['id'] )
                        <a data-original-title="Edit" href="{{ route('users.edit', $user->id) }}" data-toggle="tooltip" title="" class="tooltips"><i class="fa fa-pencil"></i></a>
                        <a data-original-title="Delete" href="{{ route('users.destroy', $user->id) }}" data-toggle="tooltip" title="" class="tooltips ajax-delete"><i class="fa fa-trash-o"></i></a>
                    @endif
                    <a data-original-title="Profile" href="{{ route('users.show', $user->id) }}" data-toggle="tooltip" title="" class="tooltips"><i class="fa fa-eye"></i></a>
                </td>
            </tr>
        @endforeach
    </tbody>
</table>

// Set defaults for all resource tables.
$.extend( $.fn.dataTable.defaults, {
    "aoColumnDefs": [
        { "bSortable": false, "aTargets": [ "nosortable" ] }
    ],
    "pagingType": "full_numbers"
});

$(document).ready(function() {

    //we define the table in a global variable so we can later manipulate it...
    resourceTable = $('.resourceTable').dataTable();

    var $addButton = $('<button class="btn btn-primary myActionButtons" id="addNew">Add New</button>');

    /* TODO: Find out if this is the best place for a add new button globally on table pages. */
    $('.dataTables_filter').parent().append($addButton);
});

$(document).on('click', '#addNew', function(e) {
    e.preventDefault();
    window.location.replace(window.location.href + '/create');
});

【问题讨论】:

    标签: php laravel datatables


    【解决方案1】:

    嗯,你的方法没有错。但在实践中,我建议你可以将大数据分页。它将显着提高性能和速度。

    当涉及到分页时,请使用 Laravel 而不是 js 或 jQuery。你可以自己试验一下,你会看到 Laravel 中的分页对性能的提升。

    【讨论】:

      【解决方案2】:

      对于大量数据API 是更好的解决方案。杰弗里解释了为什么不好的做法使用$users = User::with('role')-&gt;with('status')-&gt;get(); 检查此链接它将帮助您LINK

      【讨论】:

      • 但是当我只想从我的数据库中获取数据并将其发送到视图时,我不明白为什么我需要为我自己的应用程序提供一个 API。
      • Jeffry 在该视频系列中清楚地解释了为什么我们不使用其他方法 例如:get(), all() 它对大量数据的不良做法。只需支付 9 美元,查看那些肯定会对您有所帮助的视频教程
      猜你喜欢
      • 2019-10-15
      • 2014-04-19
      • 1970-01-01
      • 2014-08-08
      • 1970-01-01
      • 2016-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多