在Laravel 4.2中创建SQL查询

时间:2017-09-25 15:44:00

标签: php mysql laravel orm eloquent

我是Laravel的新手,但我想创建这个查询(MySQL):

SELECT
    *
FROM
    (
        SELECT
            ce.empresa_id,
            CONCAT(ce.nombre, ' ', ce.apellido) AS nombre,
            ce.grupo_contable
        FROM
            cliente_empresa AS ce
        UNION
            SELECT
                cc.empresa_id,
                cc.nombre,
                cc.grupo_contable
            FROM
                cuenta_contable AS cc
            UNION
                SELECT
                    cci.empresa_id,
                    cci.grupo_iva AS nombre,
                    cci.cuenta_contable AS grupo_contable
                FROM
                    cuenta_contables_iva AS cci
    ) AS cuentasContables
WHERE
    cuentasContables.empresa_id = 1
AND (cuentasContables.nombre LIKE '%a%'
OR cuentasContables.grupo_contable LIKE '%%')

查看文档我无法找到正确的方法。谢谢。

1 个答案:

答案 0 :(得分:0)

通常,对于ORM无法管理的查询,您可能只想调用\DB::raw

$results = \DB::table('users')
     ->select(\DB::raw(/* your stuff here */))

但是在您的情况下,您可能需要考虑坚持使用ORM。看起来你可能想尝试类似的东西:

$first = DB::table('cliente_empresa')
        ->where('empresa_id', '=', 1);

$second = DB::table('cuenta_contable')
        ->where('empresa_id', '=', 1);

$results = DB::table('cuenta_contables_iva')
        ->where('empresa_id', '=', 1)
        ->union($first)
        ->union($second)
        ->get();

显然,您还需要将SELECT列语句放在那里。