Я хочу выполнить один большой запрос из разных методов (приватный метод 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"
Как правильно связать их всех?