Допустим, я хочу, чтобы показать полный список наград с типом = «цветом»:параметризованные запросов связывание в ON пункта для LEFT JOIN в Laravel красноречивого/Query Builder
Awards Type 2013 Winner
====== ==== ===========
Blue Award color Tom
Red Award color
Green Award color Dan
Для достижения этого результата я мог есть запрос в Laravel вроде этого:
$year = '2013';
$awards = DB::table('awards')
->leftJoin('winners', function($join) use ($year)
{
$join->on('awards.id','=','winners.award_id');
$join->on('winners.year','=',DB::raw("'".$year."'"));
}
->where('awards.type','color')
->get();
Если выводить SQL, который генерирует Laravel вы увидите, что только ИНЕК спараметрирован и $ года в ON п является ЛЕФ t уязвим для SQL-инъекций, если я получаю его из ненадежного источника. Кроме того, потенциал кэширования запросов уменьшается, потому что $ year будет часто меняться. Примечание: В случае, если вы думаете, что я просто добавляю второе условие левого соединения к WHERE запроса, these are not the same.
Любые идеи о том, как получить $ year часть запроса, параметризованную?
Я теперь открыт вопрос относительно этого: https://github.com/laravel/framework/issues/1904 – prograhammer