PHPackages                             fangface/yii2-concord - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. fangface/yii2-concord

ActiveLibrary

fangface/yii2-concord
=====================

Concord extension for the Yii2 framework

4462PHP

Since Sep 3Pushed 9y ago3 watchersCompare

[ Source](https://github.com/fangface/yii2-concord)[ Packagist](https://packagist.org/packages/fangface/yii2-concord)[ RSS](/packages/fangface-yii2-concord/feed)WikiDiscussions master Synced yesterday

READMEChangelogDependenciesVersions (1)Used By (0)

Yii2 - Concord
==============

[](#yii2---concord)

Yii2 - Concord is a work in progress. This is a project exploring the use of GitHub, Travis CI, Scrutinizer CI, Packagist, PHPUnit and Yii2. The project so far mostly consists of extensions to the Yii2 Active Record implementation as well as a database connection manager. At the time of writing, Yii2 is still a moving target and very much in Alpha status.

[![Build Status](https://camo.githubusercontent.com/e6f95821cf670a721796e6abf7afe8f67233e52196229c6ae472caa7cffb69c4/68747470733a2f2f7472617669732d63692e6f72672f66616e67666163652f796969322d636f6e636f72642e706e673f6272616e63683d6d6173746572)](https://travis-ci.org/fangface/yii2-concord)[![Code Coverage](https://camo.githubusercontent.com/5fbee3d0fc010074bf0980f33d1881071e5d65ea9098bb5a1d9ef163d651551d/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f66616e67666163652f796969322d636f6e636f72642f6261646765732f636f7665726167652e706e673f733d37396433376238333739373731306333626432636639656431346238346430633835393238633666)](https://scrutinizer-ci.com/g/fangface/yii2-concord/)

Installation
------------

[](#installation)

The preferred way to install yii2-concord is through [composer](http://getcomposer.org/download/).

Either run

```
php composer.phar require --prefer-dist "fangface/yii2-concord *"

```

or add

```
"fangface/yii2-concord": "*"
```

to the require section of your composer.json.

Example Usage
-------------

[](#example-usage)

With appropriate models in place you are then able to work with hasOne, hasMany and hasEav relations similar to the following;

```
$customer = new Customer();

$customer->field1 = 'Field1';
$customer->field2 = 'Field2';

$customer->address->setAttributes(array(
    'title'       => 'Mr',
    'forename'    => 'A',
    'surname'     => 'Sample',
    'jobTitle'    => 'Job',
    'company'     => 'Company',
    'address1'    => 'Address1',
    'address2'    => 'Address2',
    'address3'    => 'Address3',
    'city'        => 'City',
    'region'      => 'Region',
    'countryCode' => 'GBR',
),false);

$customer->phone->telno = '0123456789';

$customer->customerAttributes->field1 = 'CAField1';
$customer->customerAttributes->field2 = 'CAField2';

$newOrder = new Order(array(
    'field1' => 'Order-Field-1',
    'field2' => 'Order-Field-2',
    'field3' => 'Order-Field-3',
));

// add new item
$newItem = new Item();
$newItem->productCode = 'CODE1';
$newItem->quantity    = 3;
$newItem->totalValue  = 3.36;
$newItem->field1      = 'Item-Field-1';
$newItem->field2      = 'Item-Field-2';
$newItem->field3      = 'Item-Field-3';
$newOrder->items[] = $newItem;

// add new item
$newOrder->items[] = new Item(array(
    'productCode'   => 'CODE2',
    'quantity'      => 2,
    'totalValue'    => 4.80,
    'field1'        => 'Item-Field-1',
    'field2'        => 'Item-Field-2',
    'field3'        => 'Item-Field-3',
));

// add new item
$newOrder->items['abc']->productCode = 'CODE3';
$newOrder->items['abc']->quantity    = 1;
$newOrder->items['abc']->totalValue  = 3.20;
$newOrder->items['abc']->field1      = 'Item-Field-1';
$newOrder->items['abc']->field2      = 'Item-Field-2';
$newOrder->items->get('abc')->field3 = 'Item-Field-3';

// add new item
$newKey = $newOrder->items->newElement();
$newOrder->items[$newKey]->productCode = 'CODE3';
$newOrder->items[$newKey]->quantity    = 1;
$newOrder->items[$newKey]->totalValue  = 1.90;
$newOrder->items[$newKey]->field1      = 'Item-Field-1';
$newOrder->items[$newKey]->field2      = 'Item-Field-2';

// add new item
$newOrder->items['xyz'] = new Item(array(
    'productCode'   => 'POST',
    'quantity'      => 1,
    'totalValue'    => 3.98,
    'field1'        => 'Item-Field-1',
    'field2'        => 'Item-Field-2',
    'field3'        => 'Item-Field-3',
));

$customer->orders[] = $newOrder;

$customer->saveAll();
```

All linking attributes will have been taken care of;

```
print_r($customer->allToArray());
```

```
Array
(
    [id] => 1
    [addressId] => 1
    [phoneId] => 1
    [createdAt] => 2050-12-31 23:59:59
    [createdBy] => 99
    [modifiedAt] => 2050-12-31 23:59:59
    [modifiedBy] => 99
    [customerAttributes] => Array
        (
            [field1] => CAField1
            [field2] => CAField2
            [createdAt] => 2050-12-31 23:59:59
            [createdBy] => 99
            [modifiedAt] => 2050-12-31 23:59:59
            [modifiedBy] => 99
        )

    [address] => Array
        (
            [id] => 1
            [customerId] => 1
            [title] => Mr
            [forename] => A
            [surname] => Sample
            [jobTitle] => Job
            [company] => Company
            [address1] => Address1
            [address2] => Address2
            [address3] => Address3
            [city] => City
            [region] => Region
            [countryCode] => GBR
            [createdAt] => 2050-12-31 23:59:59
            [createdBy] => 99
            [modifiedAt] => 2050-12-31 23:59:59
            [modifiedBy] => 99
            [country] => Array
                (
                    [id] => 1
                    [countryCode] => GBR
                    [shortName] => UK
                    [longName] => United Kingdom
                    [createdAt] => 2050-12-31 23:59:59
                    [createdBy] => 99
                    [modifiedAt] => 2050-12-31 23:59:59
                    [modifiedBy] => 99
                )

        )

    [phone] => Array
        (
            [id] => 1
            [customerId] => 1
            [telno] => 0123456789
        )

    [orders] => Array
        (
            [1] => Array
                (
                    [id] => 1
                    [customerId] => 1
                    [field1] => Order-Field-1
                    [field2] => Order-Field-2
                    [field3] => Order-Field-3
                    [createdAt] => 2050-12-31 23:59:59
                    [createdBy] => 99
                    [modifiedAt] => 2050-12-31 23:59:59
                    [modifiedBy] => 99
                    [items] => Array
                        (
                            [1] => Array
                                (
                                    [id] => 1
                                    [customerId] => 1
                                    [orderId] => 1
                                    [productCode] => CODE1
                                    [quantity] => 3
                                    [totalValue] => 3.36
                                    [field1] => Item-Field-1
                                    [field2] => Item-Field-2
                                    [field3] => Item-Field-3
                                    [product] => Array
                                        (
                                            [id] => 1
                                            [productCode] => CODE1
                                            [description] => Description for productCode CODE1
                                            [createdAt] => 2050-12-31 23:59:59
                                            [createdBy] => 99
                                            [modifiedAt] => 2050-12-31 23:59:59
                                            [modifiedBy] => 99
                                        )

                                )

                            [2] => Array
                                (
                                    [id] => 2
                                    [customerId] => 1
                                    [orderId] => 1
                                    [productCode] => CODE2
                                    [quantity] => 2
                                    [totalValue] => 4.8
                                    [field1] => Item-Field-1
                                    [field2] => Item-Field-2
                                    [field3] => Item-Field-3
                                    [product] => Array
                                        (
                                            [id] => 2
                                            [productCode] => CODE2
                                            [description] => Description for productCode CODE2
                                            [createdAt] => 2050-12-31 23:59:59
                                            [createdBy] => 99
                                            [modifiedAt] => 2050-12-31 23:59:59
                                            [modifiedBy] => 99
                                        )

                                )

                            [3] => Array
                                (
                                    [id] => 3
                                    [customerId] => 1
                                    [orderId] => 1
                                    [productCode] => CODE3
                                    [quantity] => 1
                                    [totalValue] => 3.2
                                    [field1] => Item-Field-1
                                    [field2] => Item-Field-2
                                    [field3] => Item-Field-3
                                    [product] => Array
                                        (
                                            [id] => 3
                                            [productCode] => CODE3
                                            [description] => Description for productCode CODE3
                                            [createdAt] => 2050-12-31 23:59:59
                                            [createdBy] => 99
                                            [modifiedAt] => 2050-12-31 23:59:59
                                            [modifiedBy] => 99
                                        )

                                )

                            [4] => Array
                                (
                                    [id] => 4
                                    [customerId] => 1
                                    [orderId] => 1
                                    [productCode] => CODE3
                                    [quantity] => 1
                                    [totalValue] => 1.9
                                    [field1] => Item-Field-1
                                    [field2] => Item-Field-2
                                    [field3] =>
                                    [product] => Array
                                        (
                                            [id] => 3
                                            [productCode] => CODE3
                                            [description] => Description for productCode CODE3
                                            [createdAt] => 2050-12-31 23:59:59
                                            [createdBy] => 99
                                            [modifiedAt] => 2050-12-31 23:59:59
                                            [modifiedBy] => 99
                                        )

                                )

                            [5] => Array
                                (
                                    [id] => 5
                                    [customerId] => 1
                                    [orderId] => 1
                                    [productCode] => POST
                                    [quantity] => 1
                                    [totalValue] => 3.98
                                    [field1] => Item-Field-1
                                    [field2] => Item-Field-2
                                    [field3] => Item-Field-3
                                    [product] => Array
                                        (
                                            [id] => 4
                                            [productCode] => POST
                                            [description] => Postage and Packaging
                                            [createdAt] => 2050-12-31 23:59:59
                                            [createdBy] => 99
                                            [modifiedAt] => 2050-12-31 23:59:59
                                            [modifiedBy] => 99
                                        )

                                )

                        )

                )

        )

)

```

###  Health Score

23

—

LowBetter than 27% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity13

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 98% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/631eb62b651b5293b68db4a5854acfec50dbc38ecfb4d6f3f203bb540c6d65ea?d=identicon)[fangface](/maintainers/fangface)

---

Top Contributors

[![fangface](https://avatars.githubusercontent.com/u/6388899?v=4)](https://github.com/fangface "fangface (97 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (2 commits)")

### Embed Badge

![Health badge](/badges/fangface-yii2-concord/health.svg)

```
[![Health](https://phpackages.com/badges/fangface-yii2-concord/health.svg)](https://phpackages.com/packages/fangface-yii2-concord)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
