Как правильно добавить привязки в laravel 5.8 - PullRequest
0 голосов
/ 29 апреля 2019

Я хочу выполнить один большой запрос из разных методов (приватный метод one + приватный метод two .. = публичный метод, который объединяет все остальные) в Laravel. Проблема в том, что я не знаю, как обрабатывать привязки Laravel в построителе запросов, потому что нет документации для этих функций.

Я пытался использовать методы Laravel DB::query() addBinding, setBindings. Я обнаружил, что мой код работает нормально, когда я использую функцию setBindings все одновременно, но это не то, что я хочу.

namespace Repository;

use Illuminate\Support\Facades\DB;
use \DateTime;

class QueryBuilder {

    /**
     * @param DateTime $date
     *
     * @return \Illuminate\Database\Query\Builder
     */
    public function ExtendedBasicQueryBuilder(DateTime $date)
    {
        $parameters = [
            'minDate:' => $date->format('Y-m-d H:m:s'),
        ];

        $query =
            $this->basicQueryBuilder()
                 ->where('date', '<', ':minDate')
                 ->addBinding($parameters)
        ;

        return $query;
    }

    /**
     * @return \Illuminate\Database\Query\Builder
     */
    private function basicQueryBuilder()
    {
        $parameters = [
            ':stateActive' => 1,
        ];

        $query =
            DB::query()
                ->select('id')
                ->from('items')
                ->where('state', '=', ':stateActive')
                ->addBinding($parameters)
        ;

        return $query;
    }
}

И результат запроса будет

string(70) "select `id` from `items` where `state` = ':stateActive' and `date` < 1"

Как правильно связать их всех?

...