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