90 lines
2.5 KiB
PHP
90 lines
2.5 KiB
PHP
<?php
|
||
|
||
abstract class BaseModel {
|
||
public $db = null;
|
||
public $table_name = null;
|
||
|
||
public $agent = null;
|
||
public $sphinx2 = null;
|
||
// public $agent = $this->agent;
|
||
public function __construct()
|
||
{
|
||
global $agent;
|
||
$pdo = new MysqlPdo(hst, ndb, user, pass);
|
||
$sql = "SET NAMES 'utf8'";
|
||
$pdo->query($sql);
|
||
$this->db = $pdo;
|
||
$this->agent = $agent;
|
||
}
|
||
public function set_sphinx2(){
|
||
$pdo = new MysqlPdo(hstsph2, null, null, null, true, '9306');
|
||
$sql = "SET NAMES 'utf8'";
|
||
$pdo->query($sql);
|
||
$this->sphinx2 = $pdo;
|
||
}
|
||
|
||
public function arrToString($array) {
|
||
return implode(',', array_map('intval', $array));
|
||
|
||
}
|
||
|
||
public function insert($insertData) {
|
||
$fields = [];
|
||
$values = [];
|
||
|
||
foreach ($insertData as $key => $value) {
|
||
$fields[] = $key;
|
||
|
||
// Если ключ properties, то проверяем, что это массив и кодируем его в JSON
|
||
if ($key === 'properties' && is_array($value)) {
|
||
$values[] = "'" . addslashes(json_encode($value, JSON_UNESCAPED_UNICODE)) . "'";
|
||
} else {
|
||
$values[] = '"' . addslashes($value) . '"';
|
||
}
|
||
}
|
||
|
||
$fields = implode(', ', $fields);
|
||
$values = implode(', ', $values);
|
||
|
||
$sql = "INSERT INTO $this->table_name ($fields)
|
||
VALUES ($values)";
|
||
|
||
return $this->db->query($sql);
|
||
}
|
||
public function update($updateData, $conditions) {
|
||
$setValues = [];
|
||
$whereConditions = [];
|
||
|
||
// Формирование полей для обновления
|
||
foreach ($updateData as $key => $value) {
|
||
if ($key === 'properties' && is_array($value)) {
|
||
$setValues[] = $key . " = '" . addslashes(json_encode($value, JSON_UNESCAPED_UNICODE)) . "'";
|
||
} else {
|
||
$setValues[] = $key . " = \"" . addslashes($value) . "\"";
|
||
}
|
||
}
|
||
|
||
// Формирование условий для WHERE
|
||
foreach ($conditions as $field => $value) {
|
||
$whereConditions[] = $field . " = \"" . addslashes($value) . "\"";
|
||
}
|
||
|
||
// Объединяем части
|
||
$setValues = implode(', ', $setValues);
|
||
$whereClause = implode(' AND ', $whereConditions); // Соединяем условия с 'AND'
|
||
|
||
// Построение запроса
|
||
$sql = "UPDATE $this->table_name
|
||
SET $setValues
|
||
WHERE $whereClause";
|
||
|
||
return $this->db->query($sql);
|
||
}
|
||
// public function delete($deleteData) {
|
||
|
||
// }
|
||
public function agent() {
|
||
global $agent;
|
||
return $this.$agent;
|
||
}
|
||
} |