Я использую 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);
}