Top Related Projects
Quick Overview
Medoo is a lightweight PHP database abstraction layer that simplifies database operations. It supports multiple database types, including MySQL, MSSQL, SQLite, and PostgreSQL, and provides a clean, easy-to-use API for performing common database tasks.
Pros
- Simple and intuitive API for database operations
- Supports multiple database types with a unified interface
- Lightweight and fast performance
- Prepared statements for enhanced security
Cons
- Limited advanced features compared to full-fledged ORMs
- May not be suitable for complex database operations
- Documentation could be more comprehensive
- Limited community support compared to larger frameworks
Code Examples
- Connecting to a database:
use Medoo\Medoo;
$database = new Medoo([
'type' => 'mysql',
'host' => 'localhost',
'database' => 'my_database',
'username' => 'root',
'password' => 'secret'
]);
- Inserting data:
$database->insert('users', [
'name' => 'John Doe',
'email' => 'john@example.com',
'age' => 30
]);
- Selecting data:
$users = $database->select('users', [
'name',
'email'
], [
'age[>]' => 25
]);
- Updating data:
$database->update('users', [
'age[+]' => 1
], [
'id' => 1
]);
Getting Started
- Install Medoo using Composer:
composer require catfan/medoo
- Include Medoo in your PHP file:
require 'vendor/autoload.php';
use Medoo\Medoo;
$database = new Medoo([
'type' => 'mysql',
'host' => 'localhost',
'database' => 'your_database',
'username' => 'your_username',
'password' => 'your_password'
]);
- Start using Medoo to perform database operations:
$data = $database->select('table_name', '*');
Competitor Comparisons
Doctrine Database Abstraction Layer
Pros of DBAL
- More comprehensive and feature-rich database abstraction layer
- Supports a wider range of database systems and advanced SQL features
- Part of the larger Doctrine ecosystem, offering integration with other Doctrine components
Cons of DBAL
- Steeper learning curve due to its complexity and extensive feature set
- Heavier and may introduce more overhead for simpler database operations
- Requires more configuration and setup compared to Medoo's simplicity
Code Comparison
Medoo:
$database = new Medoo([
'database_type' => 'mysql',
'database_name' => 'name',
'server' => 'localhost',
'username' => 'your_username',
'password' => 'your_password'
]);
$data = $database->select('table', ['column1', 'column2'], ['id' => 1]);
DBAL:
$connectionParams = [
'dbname' => 'mydb',
'user' => 'user',
'password' => 'secret',
'host' => 'localhost',
'driver' => 'pdo_mysql',
];
$conn = DriverManager::getConnection($connectionParams);
$queryBuilder = $conn->createQueryBuilder();
$result = $queryBuilder
->select('column1', 'column2')
->from('table')
->where('id = :id')
->setParameter('id', 1)
->executeQuery()
->fetchAllAssociative();
A lightweight nearly-zero-configuration object-relational mapper and fluent query builder for PHP5.
Pros of Idiorm
- Lightweight and simple to use, with a minimal learning curve
- Supports method chaining for more readable query construction
- Flexible and allows for raw SQL queries when needed
Cons of Idiorm
- Less feature-rich compared to Medoo, lacking advanced functionalities
- Not actively maintained, with the last update in 2015
- Limited database support (primarily MySQL, SQLite, and PostgreSQL)
Code Comparison
Medoo:
$data = $database->select("users", [
"name",
"email"
], [
"age[>]" => 18
]);
Idiorm:
$users = ORM::for_table('users')
->select(['name', 'email'])
->where_gt('age', 18)
->find_many();
Key Differences
- Syntax: Medoo uses array-based syntax, while Idiorm uses method chaining
- Maintenance: Medoo is actively maintained, Idiorm is not
- Features: Medoo offers more advanced features and wider database support
- Learning curve: Idiorm may be easier for beginners due to its simplicity
Conclusion
While Idiorm offers simplicity and ease of use, Medoo provides a more comprehensive solution with active development and broader database support. The choice between the two depends on project requirements and developer preferences.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
The lightweight PHP database framework to accelerate development.
Documentation
- English
- Ø§ÙØ¹Ø±Ø¨ÙØ©
- Deutsch
- Español
- Français
- हिनà¥à¤¦à¥
- Italiano
- æ¥æ¬èª
- íêµì´
- Português
- Ð ÑÑÑкий
- à¹à¸à¸¢
- УкÑаÑнÑÑка
- Tiếng Viá»t
- ç®ä½ä¸æ
- ç¹é«ä¸æ
Features
-
Lightweight - A lightweight single-file package that keeps dependencies to a minimum.
-
Easy - A clean, intuitive API that helps you get started quickly.
-
Powerful - Designed for complex SQL, data mapping, and prepared statements without sacrificing readability.
-
Compatible - Works smoothly with MySQL, MariaDB, PostgreSQL, SQLite, MSSQL, Oracle, Sybase, and more.
-
Friendly - Fits naturally into Laravel, CodeIgniter, Yii, Slim, and other PHP frameworks.
-
Free - Released under the MIT license and free to use in personal or commercial projects.
Requirements
- PHP 7.3 or later
- PDO extension enabled
Get Started
Install via composer
Add Medoo to the composer.json configuration file.
$ composer require catfan/medoo
Then update Composer
$ composer update
// Load Composer's autoloader.
require 'vendor/autoload.php';
// Import the Medoo namespace.
use Medoo\Medoo;
// Create a database connection.
$database = new Medoo([
'type' => 'mysql',
'host' => 'localhost',
'database' => 'name',
'username' => 'your_username',
'password' => 'your_password'
]);
// Insert data.
$database->insert('account', [
'user_name' => 'foo',
'email' => 'foo@bar.com'
]);
// Retrieve data.
$data = $database->select('account', [
'user_name',
'email'
], [
'user_id' => 50
]);
echo json_encode($data);
// [{
// "user_name" : "foo",
// "email" : "foo@bar.com",
// }]
Contribution Guidelines
Before submitting a pull request, ensure compatibility with multiple database engines and include unit tests when possible.
Testing & Code Style
- Run
phpunit teststo execute unit tests. - Use
php-cs-fixer fixto enforce code style consistency.
Commit Message Format
Each commit should begin with a tag indicating the type of change:
[fix]for bug fixes[feature]for new features[update]for improvements
Keep contributions simple and well-documented.
License
Medoo is released under the MIT License.
Links
- Official website: https://medoo.in
- X.com: https://x.com/MedooPHP
- Open Collective: https://opencollective.com/medoo
[More Products We Build]
Gear Browser - AI Extension Web Browser
Top Related Projects
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot