Saver

  1. Saver
  2. Reader
  3. Remover

Saver - объект предназначен для сохранения сущностей в базу.

Для кастомизации необходимо переименовать namespace:

namespace Modules\Activity\Panel\Models;

И установить:

const entity = 'app_activity_items';


<?php

namespace Modules\Activity\Panel\Models;

use Prologue\Framework\Database\Database;
use Prologue\Framework\Tests\TDD;


Class Saver
{

    const entity = 'app_activity_items';

    public static function save($params)
    {
        TDD::debug($params, 'params', 'Инициализаруем параметры');

        if (!$params['id']) {
            $params['id'] = self::createTmpEntity();
        }

        self::save__updateDatabaseRecord($params);

        self::removeTmpEntity();

        return $params['id'];
        
    }

    private static function save__updateDatabaseRecord($params)
    {

        $database = new Database;

        $pdo = $database->init();

        $sql = '';

        $params['fields']['is_tmp'] = 0;

        if ($params['fields']) {
            foreach ($params['fields'] as $code => $value) {
                $arSaveData[$code] = $value;
                $sql .= "$code=:$code,";
            }

            $sql = rtrim($sql, ', ');

        }

        $sql = 'UPDATE ' . self::entity . ' SET ' . $sql . ' WHERE id=:id';

        $stmt = $pdo->prepare($sql);

        $arSaveData['id'] = $params['id'];

        $stmt->execute($arSaveData);


    }

    private static function createTmpEntity()
    {
        $database = new Database;

        $pdo = $database->init();

        $sql = 'INSERT INTO ' . self::entity . ' SET is_tmp=:is_tmp, active=:active, date_create=NOW()';

        $stmt = $pdo->prepare($sql);

        $stmt->execute(
            [
                'active' => 0,
                'is_tmp' => 1,
            ]
        );

        return $pdo->lastInsertId();
    }

    private static function removeTmpEntity()
    {
        $database = new Database;

        $pdo = $database->init();

        $sql = 'DELETE FROM ' . self::entity . ' WHERE is_tmp=:is_tmp';

        $stmt = $pdo->prepare($sql);

        $stmt->execute(
            [
                'is_tmp' => 1,
            ]
        );
    }


}

 

  1. Saver
  2. Reader
  3. Remover