Get support for KnpLabs/RepositoryServiceProvider
If you're new to LTH, please see our FAQ for more information on what it is we do.
Support Options
Unfortunately, there are currently no active helpers for this repository on the platform. Until they become available, we reccomend the following actions:
View Open IssuesTake a look to see if anyone else has experienced the same issue as you and if they managed to solve it.
Open an IssueMake sure to read any relevant guidelines for opening issues on this repo before posting a new issue.
Sponsor directlyCheck out the page and see if there are any options to sponsor this project or it's developers directly.
KnpLabs/RepositoryServiceProvider
DEPRECATED
Unfortunately we decided to not maintain this project anymore (see why). If you want to mark another package as a replacement for this one please send an email to hello@knplabs.com.
Doctrine repository service provider for Silex
This service provider exposes an easy way to have Repositories for your silex database.
Requirements
This service provider has ben built to work with the DoctrineServiceProvider
silex extension. See Silex' DoctrineServiceProvider documentation for instruction on how to use it.
Configuration
Add the repository to your dependencies, then register the autoload:
$app['autoloader']->registerNamespaces(array(
/** Your other namespaces **/
'Knp' => __DIR__.'/../vendor/KnpSilexExtensions/'
));
Register the service provider:
$app->register(
new Knp\Provider\RepositoryServiceProvider(), array(
'repository.repositories' => array(
'projects' => 'MyProject\Repository\Project',
)
)
);
The service provider expects parameter repository.repositories
to be set and to be an associative array with service names as keys and repository classes as values.
In the example above, the projects
service will be exposed by Pimple (ie, you can access it through $app['projects']
) using the MyProject\Repository\Project
class.
Usage
As you might have guessed by now, you need to implement a concrete class for every repository that you want to use. That repository must extend Knp\Repository
and implement the getTableName
method, that should return the database's table name bound to that repository.
In the example above, given your projects are stored in the project
table, the MyProject\Repository\Project
class would look like that:
<?php
namespace MyProject\Repository;
use Knp\Repository;
class Project extends Repository;
{
public function getTableName()
{
return 'project';
}
}
The default repository implementation exposes a number of methods to manipulate your database that are basically proxies to methods from Doctrine\DBAL\Connection
:
insert(array $data)
$app['projects']->insert(array(
'title' => 'foo',
'description' => 'A project'
));
Will insert a project in the table with title
"foo" and description
"A project".
update(array $data, array $identifier)
$app['projects']->update(array('title' => 'bar'), array('title' => 'foo'));
Will update all projects' title
from "foo" to "bar".
delete(array $identifier)
$app['projects']->delete(array('title' => 'bar'));
Will update all projects which title is "bar".
find($id)
$app['projects']->find(42);
Returns the project which primary key is 42.
findAll()
$app['projects']->findAll();
Returns the entire table content.
Extending a repository
Extending a repository is as easy as adding methods to it. For example, you could add a findByTitle($title)
method to return all projects based on their title:
public function findByTitle($title)
{
return $this->db->fetchAll('SELECT * FROM project WHERE title = ?', array($title));
}
Credits
- KnpLabs for original code
- Joshua Morse for initial code extraction
Our Mission
We want to make open source more sustainable. The entire platform was born from this and everything we do is in aid of this.
From the Blog
Interesting Articles
-
Generating income from open source
Jun 23 • 8 min read
-
2023 State of OSS
Apr 23 • 45 min read ★
-
A funding experiment...
Aug 19 • 10 min read
-
But You Said I could
Aug 19 • 2 min read
Thank you for checking out LiveTechHelper |
2025 © lth-dev incorporated
p-e622a1a2