2016-05-10 93 views
0

我想要實現數據表作爲一個服務,我實現一個編輯鏈接,所以我按照這個教程: http://datatables.yajrabox.com/service如何使用Laravel yajra/laravel-數據表5.2

我創建一個DataTable我User集合使用這個命令:

PHP工匠數據表:讓UsersDataTable

所以,在我app/DataTables/UsersDataTable.php我已經配置它,如:

我想從兩個表中顯示的記錄...

<?php 

namespace App\DataTables; 

use App\User; 
use Yajra\Datatables\Services\DataTable; 

class UsersDataTable extends DataTable 
{ 
    public function ajax() 
    { 
     return $this->datatables 
      ->eloquent($this->query()) 
      ->addColumn('action', '<button class="btn btn-primary">Edit</button>') 
      ->make(true); 
    } 

    public function query() 
    { 
     $users = User::query() 
      ->leftJoin('roles', 'roles.id', '=', 'users.role_id') 
      ->select([ 
       'users.id', 
       'users.name', 
       'roles.name as role' 
      ]); 

     return $this->applyScopes($users); 
    } 

    public function html() 
    { 
     return $this->builder() 
        ->columns($this->getColumns()) 
        ->ajax('') 
        ->addAction(['width' => '80px']) 
        ->parameters($this->getBuilderParameters()); 
    } 

    private function getColumns() 
    { 
     return [ 
      'id', 
      'name', 
      'role' 
     ]; 
    } 

    protected function filename() 
    { 
     return 'users'; 
    } 
} 

這將導致以下:

enter image description here

正如你所看到的,這個工作正常。此頁面運行在以下網址:

http://my-domain.local/users

如何鏈接的Edit按鈕,鏈接如下:

http://my-domain.local/users/xxx/edit

哪裏xxx是行記錄的id

回答

0

我已經解決了它,這是你怎麼做:

public function ajax() 
{ 
    return $this->datatables 
     ->eloquent($this->query()) 
     ->addColumn('action', function($row) { 
      return '<a href="https://stackoverflow.com/users/'. $row->id .'/edit" class="btn btn-primary">Edit</a>'; 
     }) 
     ->make(true); 
} 

感謝:https://github.com/yajra/laravel-datatables/issues/476