我想在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"
如何正确绑定所有对象?