【发布时间】:2017-08-11 21:41:20
【问题描述】:
所以我有一个 Laravel Datatables 项目,我正在尝试创建一个列,当您单击特定值时,它将向 PHP 后端发送一个 AJAX 请求和将尝试按特定列和您单击的值过滤DataTable 上的结果。
$sign = Request::input('sign');
return $this->datatables
->eloquent($this->query())
->filter(function ($query) use ($sign) {
if (request()->has('sign')) {
$query->where('signs.id', "'$sign'");
}
}, true)
->addColumn('admin', function($user) {
return $user->admin == 1 ? '<span class="fa fa-star"></span>' : '<span class="fa fa-star-o"></span>';
})...
问题在于,在 filter 方法中,我无法在相关的 signs 表上执行 Where 子句。它试图查询users 表中的signs.id 列,这不是我想要的。
在我的模型上,我有这样定义的关系
public function signs(){
return $this->belongsTo('App\Models\Sign', 'sign_id', 'id');
}
我正在向 Datatable 发出基本查询,它定义了用户模型带有符号像这样
public function query()
{
$query = User::with('signs');
return $this->applyScopes($query);
}
我做错了什么?为什么我不能通过这种关系过滤我的用户?任何帮助都将不胜感激,因为我已经花费了几个小时并且无法自己解决。
【问题讨论】:
标签: php datatable eloquent laravel-5.3 relationships