phpset / pdomodel
Simple PDO-based Model
Installs: 4 435
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 2
Forks: 3
Open Issues: 0
Requires (Dev)
- phpunit/phpunit: ^10
This package is not auto-updated.
Last update: 2025-03-13 00:27:34 UTC
README
Example of using:
class YoutubeVideosModel extends \PdoModel\PdoModel { const TABLE = 'youtube_videos'; protected function create($title, $src) { $this->insert(['title' => $title, 'src' => $src]); } } $youtubeVideosModel = new YoutubeVideosModel(new \Pdo()); $result = $youtubeVideosModel->select(['id', 'likes', 'url']) ->whereEqual('published', 1) ->where('likes', '>', 100) ->orderBy('likes desc') ->limit(100) ->offset(2000) ->groupBy('author') ->getAllRows(); var_dump($result);
Setup
composer require phpset/pdomodel
Check that you have proper PHP extentions
# Change 8.2 below to your current PHP version
sudo apt install php8.2-pdo php8.2-pdo-mysql php8.2-pdo-sqlite
You need to create a usual PDO connection:
$connection = new \PDO( "mysql:host=127.0.0.1;dbname=YOURDBNAME;charset=utf8mb4", "YOURUSER", "YOURPASSWORD", [ \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ] );
Example for creating PDO in Symfony service config:
PDO: class: \PDO arguments: - "mysql:host=127.0.0.1;dbname=YOURDBNAME;charset=utf8mb4" - "YOURUSER" - "YOURPASSWORD" - !php/const PDO::ATTR_DEFAULT_FETCH_MODE: !php/const PDO::FETCH_ASSOC !php/const PDO::ATTR_ERRMODE: !php/const PDO::ERRMODE_EXCEPTION
SQLite example
$connection = new \PDO('sqlite::db.sqlite'); new PdoModel($connection)->setTable('test_table');
Tests
# run tests ./vendor/bin/phpunit # Check coverage php -dxdebug.mode=coverage ./vendor/bin/phpunit --coverage-text