A simple PHP Micro MySQL ORM with Fluent Interface
- Easy to use.
- Fluent Design and Interface.
- Required minimum dependency i.e. only PHP >=5.3.0.
- Prevent from SQL Injections.
- Where conditions in hierarchy with AND and OR operators.
- Order by clause with ascending and descending.
- Limit and offset.
Installation (with Composer)
composer require kundansingh86/creta
To use the bindings, use Composer's autoload:
require_once('vendor/autoload.php');
Add namespace and create context.
use Creta\MySqlDbContext;
$properties = [
'host'=>'localhost',
'username'=>'',
'password'=>'',
'database'=>'test'
];
$context = new MySqlDbContext($properties);
Insert the data to a table, get the generated inserted ID of the record;
$personId = $context->table('person') // table
->insert(['name'=>"Jhon", // column with name value pair
'age'=>25,
'salary' => '3000',
'department' => 'sales',
'position' => 'executive'])
->execute();
echo 'Inserted Person ID :: Jhon ', $personId;
Update the data to a table with where condition
$context->table('person') // table
->update(['position'=>'assistant manager', 'salary' => '2800']) // column with name value pair
->where(['name' => 'David', 'department'=>'finance']) // AND condition with name value pair
->execute();
Delete the data from a table with where condition
$context->table('person') // table
->delete()
->where(['id' => 10]) // condition with name value pair
->execute();
To delete all records from the table, don't specify the where condition
$context->table('person') //table
->delete()
->execute();
Select all columns from the table with the where condition
$result = $context->table('person') // table
->select()
->where(['id' => 2, 'position' => 'manager']) // condition with name value pair
->orderBy('name') // order by name in ascending
->execute();
echo '<pre>';
print_r($result);
Select specific columns from the table
$result = $context->table('person') // table
->select(["id", "name", "position"]) // column name array
->orderByDesc('salary', 'position') // order by salary then by position in descending
->limit(2, 1) // limit with 2 records and skip the 1st record
->execute();
echo '<pre>';
print_r($result);
See the sql query output of any statement
echo $context->table('person') // table
->select()
->where(['id' => 2, 'position' => 'manager']) // condition with name value pair
->orderBy('name') // order by name in ascending
->query(); // returns the generated sql query
Close the context and connection when operations are over
$context->close();
Note: A test.sql and test.php files are available in the repo for demo purpose.
Where conditions formation in various scenarios with AND & OR Cojuctions and other Operators i.e <, >, <= , >=, like
$result = $context->table('person')
->select()
->where(['id' => 2, 'position' => 'manager'])
->execute();
$result = $context->table('person')
->select()
->where(['position' => 'manager'])
->withOr(['salary >=' => 2000, 'salary <=' => 3000])
->execute();
Example 3: SELECT * FROM person WHERE (salary > 3000 AND (position = 'manager' OR position = 'executive'))
$result = $context->table('person')
->select()
->where(['salary >' => 3000])
->withAnd(['position' => ['manager', 'executive']])
->execute();
$result = $context->table('person')
->select()
->whereOr(['position' => ['manager', 'executive']])
->execute();
Example 5: SELECT * FROM person WHERE (age > 20 AND age < 22) OR (age > 25 AND age < 28) ORDER BY name asc
$result = $context->table('person')
->select()
->where(['age >' => 20, 'age <' => 22])
->orWhere(['age >' => 25, 'age <' => 28])
->orderBy('name')
->execute();
- Insert mutliple records at once.
- Group by and Having Clause.
- Aggregate Functions.
- JOIN in tables.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.