mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
1.6 KiB
1.6 KiB
4.0.0 (unreleased)
Overview
Framework
- Deprecate
SQLQuery
in favourSQLSelect
DataList::filter
by null now internally generates "IS NULL" or "IS NOT NULL" conditions appropriately on queries
Upgrading
Update code that uses SQLQuery
SQLQuery is still implemented, but now extends the new SQLSelect class and has some methods deprecated. Previously this class was used for both selecting and deleting, but these have been superceded by the specialised SQLSelect and SQLDelete classes.
Take care for any code or functions which expect an object of type SQLQuery
, as
these references should be replaced with SQLSelect
. Legacy code which generates
SQLQuery
can still communicate with new code that expects SQLSelect
as it is a
subclass of SQLSelect
, but the inverse is not true.
Update implementations of augmentSQL
Since this method now takes a SQLSelect
as a first parameter, existing code referencing the deprecated SQLQuery
type will raise a PHP error.
E.g.
Before:
:::php
function augmentSQL(SQLQuery &$query, DataQuery &$dataQuery = null) {
$locale = Translatable::get_current_locale();
if(!preg_match('/("|\'|`)Locale("|\'|`)/', implode(' ', $query->getWhere()))) {
$qry = sprintf('"Locale" = \'%s\'', Convert::raw2sql($locale));
$query->addWhere($qry);
}
}
After:
:::php
function augmentSQL(SQLSelect $query, DataQuery $dataQuery = null) {
$locale = Translatable::get_current_locale();
if(!preg_match('/("|\'|`)Locale("|\'|`)/', implode(' ', $query->getWhereParameterised($parameters)))) {
$query->addWhere(array(
'"Locale"' => $locale
));
}
}