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