save
. Например, чтобы при прохождении через цикл я мог подправить значение и вызвать save
.class Account {
private $database;
private $properties = [];
private $updated = [];
public function __construct($database) {
$this->database = $database;
}
public function __get($name) {
if(isset($this->properties[$name])) {
return $this->properties[$name];
}
}
public function __set($name, $message) {
if(isset($this->properties[$name])) {
if((string) $name != 'id') {
$this->updated[$name] = $message;
$this->properties[$name] = $message;
}
}
}
public function getById($id) {
$object = $this->database->query('SELECT * FROM `ACCOUNTS` WHERE `id` = ?', [ $id ])->fetch();
if(isset($object->id)) {
$this->properties = json_decode(json_encode($object), true);
}
}
public function save() {
if(isset($this->properties['id'])) {
if(!empty($this->updated)) {
$prepare = 'UPDATE `ACCOUNTS` SET ';
$prepare .= '`' . implode('` = ?, `', array_keys($this->updated)) . '` = ? ';
$prepare .= 'WHERE `id` = ?';
$this->updated += [ 'id' => $this->properties['id'] ];
$this->database->query($prepare, array_values($this->updated));
$this->updated = [];
}
}
}
}
$account = new Account($database);
$account->getById(1);
$account->username = '@tests';
$account->save();
public function getById($id) {
$object = $this->database->query('SELECT * FROM `ACCOUNTS` WHERE `id` = ?', [ $id ])->fetch();
if(isset($object->id)) {
$this->properties = json_decode(json_encode($object), true);
}
}
public function getById($id) {
$object = $this->database->query('SELECT * FROM ? WHERE `id` = ?', [ $this->table, $id ])->fetch();
if(isset($object->id)) {
$this->properties = json_decode(json_encode($object), true);
}
}
if(isset($object->id)) {
$this->properties = json_decode(json_encode($object), true);
}
я не могу представить как сделать получение нескольких записей + к каждой этой записи добавить метод saveметод findCollectionById, к примеру. Возвращает тебе массив объектов. Проходишься циклом по этому массиву и для каждого объекта вызываешь save()