Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/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
Php 一般错误:合并两个查询时出现2031(laravel datatables)_Php_Sql_Laravel_Datatables - Fatal编程技术网

Php 一般错误:合并两个查询时出现2031(laravel datatables)

Php 一般错误:合并两个查询时出现2031(laravel datatables),php,sql,laravel,datatables,Php,Sql,Laravel,Datatables,这些是构成要推送到laravel datatables builder的集合的查询: foreach (Session::get('trienios') as $trienio) { $oeTrienios = $oeTrienios->where('data_trienio', $trienio->trienio)->whereHas('curso', function ($query) use ($trienio) { $query->wher

这些是构成要推送到laravel datatables builder的集合的查询:

foreach (Session::get('trienios') as $trienio) {
    $oeTrienios = $oeTrienios->where('data_trienio', $trienio->trienio)->whereHas('curso', function ($query) use ($trienio) {
        $query->where('curso', $trienio->curso);
    });
}

$union = Trienio::with('curso')->whereHas('curso', function ($query) use ($coordinatedCourse) {
    $query->where('curso', $coordinatedCourse);
})->union($oeTrienios);


$trienios = \DB::table(\DB::raw("({$union->toSql()}) as x"))->select(['data_trienio']);
官方的laravel datatables网站上有一个教程“解释”了如何使用united queries,但是它非常模糊,无法实际解释任何内容。此外,当我试图在教程中添加他们的代码时:

$trienios = \DB::table(\DB::raw("({$union->toSql()}) as x"))
它给了我以下错误:

SQLSTATE[HY000]: General error: 2031 (SQL: select count(*) as aggregate from (select `data_trienio` from ((select * from `trienios` where exists (select * from `cursos` where `trienios`.`curso_id` = `cursos`.`id` and `curso` = ?)) union (select * from `trienios` where `data_trienio` = ? and exists (select * from `cursos` where `trienios`.`curso_id` = `cursos`.`id` and `curso` = ?) and `data_trienio` = ? and exists (select * from `cursos` where `trienios`.`curso_id` = `cursos`.`id` and `curso` = ?))) as x) count_row_table)
但是,如果我将参数
->get()
附加到
->union($oeTrienios)
,它将正常工作,但是,集合将在数据表上无法排序

我如何解决这个问题?欢迎任何帮助


附-链接到演示:

子查询
$union->toSql()
只有没有参数的sql代码,您需要调用
绑定。请参阅,代码为:

$trienios = \DB::table(\DB::raw("({$union->toSql()}) as x"))
    ->select(['data_trienio'])
    ->mergeBindings($union);

你能提到联合查询教程的链接吗?添加到帖子中。抛出此错误:传递给Illumb\Database\Query\Builder::mergeBindings()的参数1必须是Illumb\Database\Query\Builder的实例,Illumb\Database\Eloquent\Builder的实例。我认为
$union
应该是
$union->getQuery()
。不管怎样,这个救了我的命。