| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- <?php
- namespace Models;
- class CommodityModel
- {
- private \PDO $pdo;
- public function __construct()
- {
- if (isset($GLOBALS['pdo']) && $GLOBALS['pdo'] instanceof \PDO) {
- $this->pdo = $GLOBALS['pdo'];
- return;
- }
- throw new \RuntimeException('Global PDO connection not initialized');
- }
- public function create(string $name, string $flag = 'a'): array
- {
- $stmt = $this->pdo->prepare('INSERT INTO "commodities" (commodities_name, commodities_flag) VALUES (:name, :flag) RETURNING commodities_id');
- $stmt->execute(['name' => $name, 'flag' => $flag]);
- $id = (int)$stmt->fetchColumn();
- return [
- 'commodities_id' => $id,
- 'commodities_name' => $name,
- 'commodities_flag' => $flag,
- ];
- }
- public function update(int $id, ?string $name = null, ?string $flag = null): ?array
- {
- $fields = [];
- $params = ['id' => $id];
- if ($name !== null) { $fields[] = 'commodities_name = :name'; $params['name'] = $name; }
- if ($flag !== null) { $fields[] = 'commodities_flag = :flag'; $params['flag'] = $flag; }
- if (!$fields) { return null; }
- $sql = 'UPDATE "commodities" SET ' . implode(', ', $fields) . ' WHERE commodities_id = :id';
- $stmt = $this->pdo->prepare($sql);
- $ok = $stmt->execute($params);
- if (!$ok) { return null; }
- $get = $this->pdo->prepare('SELECT commodities_id, commodities_name, commodities_flag FROM "commodities" WHERE commodities_id = :id');
- $get->execute(['id' => $id]);
- return $get->fetch(\PDO::FETCH_ASSOC) ?: null;
- }
- public function delete(int $id): bool
- {
- $stmt = $this->pdo->prepare('DELETE FROM "commodities" WHERE commodities_id = :id');
- $stmt->execute(['id' => $id]);
- return $stmt->rowCount() > 0;
- }
- public function getAll(?string $flag = 'a'): array
- {
- if ($flag === null) {
- $stmt = $this->pdo->query('SELECT commodities_id, commodities_name, commodities_flag FROM "commodities" ORDER BY commodities_id');
- return $stmt->fetchAll(\PDO::FETCH_ASSOC);
- }
- $stmt = $this->pdo->prepare('SELECT commodities_id, commodities_name, commodities_flag FROM "commodities" WHERE commodities_flag = :flag ORDER BY commodities_id');
- $stmt->execute(['flag' => $flag]);
- return $stmt->fetchAll(\PDO::FETCH_ASSOC);
- }
- }
|