Skip to content
Database layer based on Nette Database and FluentPDO
PHP
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitattributes
.gitignore
.travis.yml
README.md
composer.json
license.md

README.md

Build Status   Downloads Total   Latest Version

What is Flunorette?

Flunorette

  • is a database layer simplifying work with tables, relations and CRUD operations.

  • is heavily based on Nette Database (Table) - NDB(T) and uses modified FluentPDO as SQL builder.

  • is derived directly from NDB(T)2.0 thus it's like on 95% compatible with it[1]

  • uses the same syntax/API as NDBT2.0 but takes faster code from NDBT2.1.

The main reason i decided to create Flunorette was that NDBT is superior for simple websites like blogs but with complex web apps you sooner or later hit the wall. E.g. as soon as you need create queries with conditions inside JOIN clauses or any other advance queries there is no way how to achieve it with NDBT.

[1]: Flunorette has a replacer that can help you with replacing NDB(T)2.0.


Download

Via composer composer require icaine/flunorette '~1.0' or via github.

Documentation

Can be found on wiki pages.

###Examples

Some examples are on wiki pages and even more examples can be seen in tests.


Change log

1.6.2014 - Some classes moved to new namespaces (towards PSR-4). To migrate from 0.9 to 1.0 use:

	//BC part

	//https://github.com/icaine/RenamedClassLoader
	$rcLoader = new iCaine\RenamedClassLoader([
		'Flunorette\\NetteDatabaseReplacer' => 'Flunorette\\Bridges\\Nette\\NetteDatabaseReplacer',
		'Flunorette\\Hydrator' => 'Flunorette\\Hydrators\\Hydrator',
		'Flunorette\\HydratorSelectionDefault' => 'Flunorette\\Hydrators\\HydratorSelection',
		'Flunorette\\HydratorArrayHash' => 'Flunorette\\Hydrators\\HydratorArrayHash',
		'Flunorette\\HydratorResult' => 'Flunorette\\Hydrators\\HydratorField',

		'Flunorette\\ActiveRow' => 'Flunorette\\Selections\\ActiveRow',
		'Flunorette\\Selection' => 'Flunorette\\Selections\\Selection',
		'Flunorette\\GroupedSelection' => 'Flunorette\\Selections\\GroupedSelection',
		'Flunorette\\ISelectionFactory' => 'Flunorette\\Selections\\ISelectionFactory',
		'Flunorette\\SelectionFactory' => 'Flunorette\\Selections\\SelectionFactory',

		'Flunorette\\DeleteQuery' => 'Flunorette\\Queries\\DeleteQuery',
		'Flunorette\\InsertQuery' => 'Flunorette\\Queries\\InsertQuery',
		'Flunorette\\JoinableQuery' => 'Flunorette\\Queries\\JoinableQuery',
		'Flunorette\\Query' => 'Flunorette\\Queries\\Query',
		'Flunorette\\QueryBuilder' => 'Flunorette\\Queries\\QueryBuilder',
		'Flunorette\\QueryContext' => 'Flunorette\\Queries\\QueryContext',
		'Flunorette\\SelectQuery' => 'Flunorette\\Queries\\SelectQuery',
		'Flunorette\\UpdateQuery' => 'Flunorette\\Queries\\UpdateQuery',

		'Flunorette\\IReflection' => 'Flunorette\\Reflections\\IReflection',
		'Flunorette\\ConventionalReflection' => 'Flunorette\\Reflections\\ConventionalReflection',
		'Flunorette\\DiscoveredReflection' => 'Flunorette\\Reflections\\DiscoveredReflection',
		'Flunorette\\ReflectionException' => 'Flunorette\\Reflections\\ReflectionException',

	]);
    $rcLoader->onClassLoaded[] = function ($old, $new) {
        trigger_error($old, E_USER_DEPRECATED);
    };
    $rcLoader->register();

	//If you are using the replacer
	//Flunorette\NetteDatabaseReplacer::replace();
	//end BC part
You can’t perform that action at this time.