如何在laravel 5.8中正确添加绑定

时间:2019-04-29 11:43:31

标签: php mysql sql laravel laravel-query-builder

我想在Laravel中使用不同的方法(私有方法一种+私有方法两种.. =将所有其他方法合并在一起的公共方法)来完成一个大查询。问题是我不知道如何在查询生成器中处理Laravel绑定,因为没有这些功能的文档。

我尝试使用Laravel DB::query()方法addBindingsetBindings。我发现我一次使用函数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"

如何正确绑定所有对象?

0 个答案:

没有答案