This package is not installable via Composer 1.x, please make sure you upgrade to Composer 2+. Read more about our Composer 1.x deprecation policy.
This package is abandoned and no longer maintained. The author suggests using the package instead.

Implementation of DDD key concepts for Yii2.

v0.0.27 2018-12-11 09:39 UTC



Build Status Tested By Code Quality Latest Stable Version Monthly Downloads Total Downloads License

Yii2 Domain is a Domain Driven Design patterns implementation for Yii2.

Includes realization of a following patterns:

  • Repository
  • Entity
  • Specification (very rough implementation through ActiveQuery)
  • Strategy


PHP >= 7.1 is required.

Getting Started

Run the following command to add Yii2 Domain to your project's composer.json. See Packagist for specific versions.

composer require php-kitchen/yii2-domain

Or you can copy this library from:

For additional information and guides go to the project documentation


Goal of this library is to introduce Domain Driven Design(DDD) principles to Yii2 projects and to fix ActiveRecord problem of domain layer in applications with medium and large domain area.

Each model represented as a standalone directory that contains repository, entity, record and query classes. All of these classes represent a domain model.


  user/                    contains all of the classes that represents domain model
        UserRepository     model repository
        UserEntity         model entity(represents domain entity - not the DB table that containd entity information) 
        UserRecord         DB record that contains entity information
        ProfileRecord      DB record with additional information thta also a part of the UserEntity.
        UserQuery          query class of model e.g. - specification of the entity

Code examples

Simple search and store:

$repository = new UserRepository();
$entity = $repository->findOneWithPk(1);
// do some manipulations with entity

Complex criteria search and deleting:

$repository = new UserRepository();
$entity = $repository->find()
// do some manipulations with entity


this library is designed to solve ActiveRecord problem of Yii 2. Don't use this library if you are starting a new project and looking for a solution that would allow you to build a decent architecture - you need a good framework that would allow you do build high-quality solution and Yii 2 is not a framework that would allow you to build high quality architecture and implement rich domain layer.

"Yii2Domain" library is a crutch designed to solve issues of domain layer caused by ActiveRecord in existing projects. There are few decent solutions to build domain layer in a new project:


If you want to ask any questions, suggest improvements or just to talk with community and developers, join our server at Discord