juksta/laravel-raw-sql-builder

Create and operate raw sql as string with parameters support

dev-master 2020-11-16 08:45 UTC

This package is auto-updated.

Last update: 2024-05-17 02:19:48 UTC


README

Laravel Raw SQL Builder is a library that helps build raw sql text queries. It's built on top of the Eloquent query builder.

Usage

        $bindings = [];

        $fields = "
            b.id,
            b.name,
            pp.name as product_plan,
            b.created_at
        ";

        $sql = "
            SELECT :fields
            FROM
                business b
                LEFT JOIN business_unit bu ON (bu.business_id = b.id AND bu.active = 1)
        ";


        $queryBuilder = $this->getQueryBuilder();

        $queryBuilder->where(new Expression('b.name'), 'like', '%LTD%');
        $sql .= $this->compileWheresSql($queryBuilder) . ' ';

        $bindings += $queryBuilder->getBindings();

        if ($condition) {
            $orderColumn = 'b.name';
            $orderDirection = 'ASC';

            $queryBuilder->orderBy($orderColumn, $orderDirection);
        }

        if (true) {
            $offset = 10;
            $length = 10;
            $queryBuilder->offset($offset);
            $queryBuilder->limit($length);
        }

        $totalSql = $sql;

        $sql .= $this->compileOrdersSql($queryBuilder) . ' ';
        $sql .= $this->compileLimitSql($queryBuilder) . ' ';
        $sql .= $this->compileOffsetSql($queryBuilder);

        $sql = trim(str_replace(":fields", $fields, $sql));

        $items = DB::select(DB::raw($sql), $bindings);