Add support for custom WHERE restrictions
DatabaseObject::all_for() now supports additional constraints (with variables) to further filter the results returned.
This commit is contained in:
@@ -79,7 +79,7 @@ abstract class SihnonFramework_DatabaseObject {
|
|||||||
return $objects;
|
return $objects;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function all_for($field, $value, $view = null) {
|
public static function all_for($field, $value, $view = null, $additional_conditions = null, $additional_params = null) {
|
||||||
$database = SihnonFramework_Main::instance()->database();
|
$database = SihnonFramework_Main::instance()->database();
|
||||||
|
|
||||||
if ($view === null) {
|
if ($view === null) {
|
||||||
@@ -99,9 +99,18 @@ abstract class SihnonFramework_DatabaseObject {
|
|||||||
|
|
||||||
$field_list = join(', ', array_map(function($v) { return "`{$v}`"; }, $fields));$objects = array();
|
$field_list = join(', ', array_map(function($v) { return "`{$v}`"; }, $fields));$objects = array();
|
||||||
|
|
||||||
foreach ($database->selectList("SELECT {$field_list} FROM `{$view}` WHERE `{$field}`=:{$field} ORDER BY `id` DESC", array(
|
$params = array(
|
||||||
array('name' => $field, 'value' => $value, 'type' => PDO::PARAM_STR),
|
array('name' => $field, 'value' => $value, 'type' => PDO::PARAM_STR),
|
||||||
)) as $row) {
|
);
|
||||||
|
if ($additional_params) {
|
||||||
|
$params = array_merge($params, $additional_params);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($additional_conditions) {
|
||||||
|
$conditions = "AND ({$additional_conditions}) ";
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($database->selectList("SELECT {$field_list} FROM `{$view}` WHERE `{$field}`=:{$field} {$conditions} ORDER BY `id` DESC", $params) as $row) {
|
||||||
$objects[] = static::fromDatabaseRow($row);
|
$objects[] = static::fromDatabaseRow($row);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user