承接 gridonic/repository-service-provider 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

gridonic/repository-service-provider

Composer 安装命令:

composer require gridonic/repository-service-provider

包简介

Doctrine repository service provider for Silex

README 文档

README

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 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

统计信息

  • 总下载量: 141
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 8
  • Forks: 15
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2014-10-21

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固