Laravel проблема сортировки данных - PullRequest
2 голосов
/ 09 января 2020

Я использую Laravel - таблицы данных от yajra https://github.com/yajra/laravel-datatables-docs

Она отлично работает с одной таблицей, но все становится серьезно, когда я использую с ней красноречивые отношения , Как описано ниже в коде, я показываю имя пользователя в таблице, оно показывает имя пользователя совершенно нормально, но когда я пытаюсь выполнить сортировку по пользователю или просто выполнить поиск, оно выдает мне неправильную ошибку или показывает ошибку SQL.

У меня есть следующие красноречивые модели

class Project extends Model{
     public function client(){
      return $this->belongsTo(Client::class);
     }
}
class Client extends Model{
     public function user(){
          return $this->belongsTo(User::class);
     }
}
class User extends Model{
}

HTML

<table id="table">
    <tbody>
        <tr>
            <td>Name</td>
            <td>Start Date</td>
            <td>Target</td>
            <td>User</td>
        </tr>
    </tbody>
</table>

Javascript

$("#table").DataTable({
        processing: true,
        serverSide: true,
        autoWidth:false,
        ajax: '/projects',
        columns:[
            { data: 'project_name', name: 'project_name' },
            { data: 'start_date', name: 'start_date' },
            { data: 'target', name: 'target' },
            { data: 'client.user.name', name: 'client.user.name' }
        ]
    });

Контроллер проекта

public function projects(){
    return Datatables::of(Proejct::with(['client.user']))
            ->addColumn("client.user.name", function($row){
                return $row->client->user->name;
            })->make(true);
}

Ответы [ 2 ]

2 голосов
/ 10 января 2020

Он не поддерживает многоуровневую сортировку или поиск красноречивых отношений. Таким образом, вы получите данные, но не сможете найти или отсортировать их.

Ваш код выглядит нормально, и он будет отлично работать для одного уровня.

Вот более подробная информация о проблеме. https://github.com/yajra/laravel-datatables/issues/993

0 голосов
/ 09 января 2020

return $ row-> client () -> user () -> name;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...