如何在laravel中使用yajra datatable多对多关系显示数据?
我正在使用Yajra数据表。我想显示数据并过滤总统姓名的数据 我有三张桌子如何在laravel中使用yajra datatable多对多关系显示数据?,laravel,yajra-datatable,Laravel,Yajra Datatable,我正在使用Yajra数据表。我想显示数据并过滤总统姓名的数据 我有三张桌子 1- Planes = id, title, description. 2- presidents = id, P_name. 3- Plane_president = plane_id , president_id 平面模型: public function president() { return $this->belongsToMany(President::class);
1- Planes = id, title, description.
2- presidents = id, P_name.
3- Plane_president = plane_id , president_id
平面模型:
public function president()
{
return $this->belongsToMany(President::class);
}
主席模式:
public function planes()
{
return $this->belongsToMany(Plane::class);
}
我的控制器:
public function index(Request $request)
{
if ($request->ajax()) {
$query = Plane::with('presidents')->selectRaw('distinct planes.*');
return $this->dataTable
->eloquent($query)
->addColumn('P_name', function (Plane $plane) {
return $plane->presidents->map(function($president) {
return str_limit($president->P_name);
})->implode('<br>');
})
->make(true);
}
return view('planes.index');
}
js代码:
<script type="text/javascript">
$('#search').DataTable({
processing: true,
serverSide: true,
ajax: '{{ route("plane.index") }}',
columns: [
{data: 'id', name: 'id'},
{data: 'main_point', name: 'main_point'},
{data: 'presidents[, ].P_name', name: 'president'},
]
});
</script>
如何解决此错误?您需要按如下方式传递它
return datatables()->eloquent($query);
请检查一下电话号码。为了显示总统的名字,我建议
implode(', ', $plane->presidents->pluck('P_name')->toArray())
你需要通过它如下
return datatables()->eloquent($query);
请检查一下电话号码。为了显示总统的名字,我建议
implode(', ', $plane->presidents->pluck('P_name')->toArray())
使用DataTables::创建datatable时,您缺少->rawColumns['p_name']我添加了它
如果$request->ajax{
$plane=plane::使用“总统”->选择RAW“不同的平面”。'->获取;
return\DataTables::of$plane
->addColumn'p_name',函数$plane{
返回内爆“,”,$plane->presidents->Pull'P_name”->toArray;
}
->rawColumns['p_name']
->实现;
}
在javascript中
$'search'.DataTable{
处理:对,
服务器端:是的,
ajax:“{routeplane.index}}”,
栏目:[
{数据:'id',名称:'id'},
{数据:'main_point',名称:'main_point'},
{data:'p_name',name:'p_name'},//在服务器端操作此列的数据,如下所示
]
};
使用DataTables::创建datatable时,您缺少->rawColumns['p_name']我添加了它
如果$request->ajax{
$plane=plane::使用“总统”->选择RAW“不同的平面”。'->获取;
return\DataTables::of$plane
->addColumn'p_name',函数$plane{
返回内爆“,”,$plane->presidents->Pull'P_name”->toArray;
}
->rawColumns['p_name']
->实现;
}
在javascript中
$'search'.DataTable{
处理:对,
服务器端:是的,
ajax:“{routeplane.index}}”,
栏目:[
{数据:'id',名称:'id'},
{数据:'main_point',名称:'main_point'},
{data:'p_name',name:'p_name'},//在服务器端操作此列的数据,如下所示
]
};
当我想搜索数据DataTables时,出现了这个错误警告:table id=search-异常消息:SQLSTATE[42S22]:找不到列:1054未知列“planes.presidents”在where子句中“SQL:选择count*作为从不同平面中选择的聚合。*从平面“where LOWERplanes.id如%j%或LOWERplanes.main_point如%j%或LOWERplanes.presidents如%j%count_row_table”搜索数据DataTables时出现此错误警告:tableid=搜索-异常消息:SQLSTATE[42S22]:未找到列:1054未知列“planes.presidents”在where子句中“SQL:选择计数*作为从不同平面中选择的聚合。*从平面`其中LOWERplanes.id类似于%j%或LOWERplanes.main\点类似于%j%或LOWERplanes.presidents类似于%j%count\行\表`