如何在Laravel 6中进行多个子查询?
How to make multiple subquery in Laravel 6?
我正在使用 PHP 和 Laravel 6,我需要查询多个子查询。子查询在同一个 table 上,我无法通过连接来完成(或者我想不出办法)。
我需要做这个查询:
select t.nombre, t.anio, (select v.value form Valor v where
v.id=t.tipo) as tipo, (select v.value form Valor v where
v.id=t.centro) as centro from Titulo
我尝试过类似的操作,但没有成功:
$query = trim($request->get('searchText'));
$titulos = DB::table('titulo as t')
->select('t.nombre','t.anio')
->DB::raw('(select v.value from Valor v where t.tipo = v.id) as tipo'))
->paginate(7);
你能帮帮我吗?
非常感谢,我看了你!
您可以使用 selectSub
函数
$query = trim($request->get('searchText'));
$titulos = DB::table('titulo as t')
->select('t.nombre','t.anio')
->selectSub(function ($query) {
$query->from('Valor')
->whereColumn('Valor.id', 'titulo.tipo')
->select('Valor.value')
->latest()
->take(1);
}, 'tipo')
->selectSub(function ($query) {
$query->from('Valor')
->whereColumn('Valor.id', 'titulo.centro')
->select('Valor.value')
->latest()
->take(1);
}, 'centro')
->paginate(7);
我正在使用 PHP 和 Laravel 6,我需要查询多个子查询。子查询在同一个 table 上,我无法通过连接来完成(或者我想不出办法)。
我需要做这个查询:
select t.nombre, t.anio, (select v.value form Valor v where v.id=t.tipo) as tipo, (select v.value form Valor v where v.id=t.centro) as centro from Titulo
我尝试过类似的操作,但没有成功:
$query = trim($request->get('searchText'));
$titulos = DB::table('titulo as t')
->select('t.nombre','t.anio')
->DB::raw('(select v.value from Valor v where t.tipo = v.id) as tipo'))
->paginate(7);
你能帮帮我吗?
非常感谢,我看了你!
您可以使用 selectSub
函数
$query = trim($request->get('searchText'));
$titulos = DB::table('titulo as t')
->select('t.nombre','t.anio')
->selectSub(function ($query) {
$query->from('Valor')
->whereColumn('Valor.id', 'titulo.tipo')
->select('Valor.value')
->latest()
->take(1);
}, 'tipo')
->selectSub(function ($query) {
$query->from('Valor')
->whereColumn('Valor.id', 'titulo.centro')
->select('Valor.value')
->latest()
->take(1);
}, 'centro')
->paginate(7);