Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/skrajewski/resource-naming-strategy
Resource Naming Strategy for Doctrine ORM
https://github.com/skrajewski/resource-naming-strategy
doctrine php
Last synced: 14 days ago
JSON representation
Resource Naming Strategy for Doctrine ORM
- Host: GitHub
- URL: https://github.com/skrajewski/resource-naming-strategy
- Owner: skrajewski
- Created: 2015-04-30T21:10:14.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2020-09-30T21:14:40.000Z (about 4 years ago)
- Last Synced: 2024-10-01T06:45:00.876Z (about 2 months ago)
- Topics: doctrine, php
- Language: PHP
- Size: 18.6 KB
- Stars: 4
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
Resource Naming Strategy
=======================
[![building](https://img.shields.io/travis/skrajewski/resource-naming-strategy.svg)](https://travis-ci.org/skrajewski/resource-naming-strategy)
[![codeclimate](https://img.shields.io/codeclimate/maintainability/skrajewski/resource-naming-strategy)](https://codeclimate.com/github/skrajewski/resource-naming-strategy)
[![version](https://img.shields.io/packagist/v/szykra/resource-naming-strategy.svg)](https://packagist.org/packages/szykra/resource-naming-strategy)
[![license](https://img.shields.io/packagist/l/szykra/resource-naming-strategy.svg)](https://packagist.org/packages/szykra/resource-naming-strategy)Resource Naming Strategy for Doctrine ORM
## Why _Resource_?
This naming strategy following the natural way of thinking about _entities_ and _resources_. Imagine that you have __one Flower__. It's single entity. You want to store some data about __flowers__ e.g. in your database. It's _resource_.Simple? I know resource named _flower_ sounds easier but sometimes it's more confusing. In the end, you have a lot of flowers, not one.
This strategy is similar to the _Laravel_ naming convention (See [mapping](#mapping) section).
## Requirements
This package uses `icanboogie/inflector` and it requires a **mbstring** php extension.## Instalation
### Install via composer
Add dependecy to your `composer.json` file and run `composer update`.```json
"require": {
"szykra/resource-naming-strategy": "~0.1"
}
```## Usage
### Usage with Doctrine
```php
$namingStrategy = new \Szykra\NamingStrategy\ResourceNamingStrategy();
$configuration()->setNamingStrategy($namingStrategy);
```### Usage with Symfony
You have a two ways to use this naming strategy#### Register bundle in `AppKernel.php`
Just open your `AppKernel.php` file and register new symfony bundle which contains a service definition.```php
$bundles = array(
...
new Szykra\NamingStrategy\ResourceNamingBundle\ResourceNamingBundle()
);
```Now you can configure Doctrine in `config.yml` to use new naming strategy.
```yml
doctrine:
orm:
naming_strategy: szykra.naming_strategy.resource_naming_strategy
```### Define your own service
If you don't want to register additional bundles you can create own service definiton in `services.yml`:```yml
services:
app.naming_strategy.resource:
class: Szykra\NamingStrategy\ResourceNamingStrategy
```And don't forget to configure Doctrine to use this service.
## Mapping
### Entity to table name
Lowercase and plural| Entity | Table |
|-------------- |----------------- |
| User | users |
| Category | categories |
| TaskActivity | task_activities |### Property to column name
Lowercase letters and words separated by the underscore| Property | Column |
|---------------------|-----------------------|
| firstName | first_name |
| LastName | last_name |
| secondRememberToken | second_remember_token |### Embedded field to column name
Lowercase letters and words separated by the underscore| Property from embedded `Address` | Column |
|----------------------------------|--------------------------|
| street | address_street |
| postcode | address_postcode |
| addressLineOne | address_address_line_one |### Join column name
Lowercase letters and words separated by the underscore with *_id* suffix| Property | Column |
|---------------------|-----------------------|
| reporter | reporter_id |
| task_activity | task_activity_id |### Join table name
Two singular lowercase entity names in ascending order with words separated by the underscore| Entity 1 | Entity 2 | Table |
|----------|----------|---------------|
| User | Task | task_user |
| Comment | Post | comment_post |
| Work | TimeLog | time_log_work |## License
The MIT License. Copyright © 2015 - 2020 Szymon Krajewski.