Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在laravel中使用yajra datatable多对多关系显示数据?_Laravel_Yajra Datatable - Fatal编程技术网

如何在laravel中使用yajra datatable多对多关系显示数据?

如何在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);

我正在使用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);
    }
主席模式:

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\行\表`