mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
54 lines
1.6 KiB
Markdown
54 lines
1.6 KiB
Markdown
# 4.0.0 (unreleased)
|
|
|
|
## Overview
|
|
|
|
### Framework
|
|
|
|
* Deprecate `SQLQuery` in favour `SQLSelect`
|
|
* `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
|
|
));
|
|
}
|
|
}
|
|
|
|
|