Skip to content

組織構造

Doggy は完全な企業組織構造管理機能を提供します。Gedmo Nested Set に基づいてツリー構造を実装し、複数会社、複数部門、職位編成をサポートします。

エンティティモデル

組織構造の関連エンティティは src/Entity/Organization/ にあります:

エンティティテーブル名説明
Corporationグループ/企業グループ
Company会社
Departmentorg_department部門(Gedmo NestedTree)
Position職位
PositionLevel職級
Employee従業員(システムユーザーを兼ねる)

部門管理

部門は Gedmo NestedTree で無限階層のツリー構造を実装します(src/Entity/Organization/Department.php):

php
#[ORM\Entity]
#[ORM\Table(name: 'org_department')]
#[Gedmo\Tree(type: 'nested')]
class Department implements GedmoNode
{
    use CommonTrait;

    #[ORM\Id]
    #[ORM\Column(type: 'uuid', unique: true)]
    #[ORM\GeneratedValue(strategy: 'CUSTOM')]
    #[ORM\CustomIdGenerator(class: 'doctrine.uuid_generator')]
    private $id;

    #[ORM\Column(length: 100)]
    private string $name;

    #[ORM\Column(length: 50, nullable: true)]
    private ?string $code = null;

    #[Gedmo\TreeLeft]
    #[ORM\Column(type: 'integer')]
    private int $lft;

    #[Gedmo\TreeLevel]
    #[ORM\Column(type: 'integer')]
    private int $lvl;

    #[Gedmo\TreeRight]
    #[ORM\Column(type: 'integer')]
    private int $rgt;

    #[Gedmo\TreeRoot]
    #[ORM\Column(type: 'integer', nullable: true)]
    private ?int $root = null;

    #[Gedmo\TreeParent]
    #[ORM\ManyToOne(targetEntity: self::class, inversedBy: 'children')]
    private ?self $parent = null;

    #[ORM\OneToMany(targetEntity: self::class, mappedBy: 'parent')]
    private Collection $children;

    /** Many-to-Many with Employee for managers */
    #[ORM\ManyToMany(targetEntity: Employee::class)]
    private Collection $manager;
}

部門属性

フィールドタイプ説明
namestring部門名
codestring一意のコード
parentself (NestedTree)上位部門
managerManyToMany(Employee)部門責任者
companyManyToOne(Company)所属会社
typestring部門タイプ
statestring有効/無効
sortOrderintegerソート重み

管理画面

管理画面の入口: App\Controller\Admin\OrgController

  • ツリー構造のビジュアル表示(templates/admin/org/department.html.twig
  • 部門編集(departmentEdit.html.twig
  • 部門ツリーノードコンポーネント(department_node.html.twig
  • 部門セレクター(department/singleSelect.html.twig

職位管理

職位は組織内のポジション定義であり、部門と関連付けられます。管理の入口は templates/admin/org/position/:

  • 職位一覧(index.html.twig
  • 職位の作成/編集(create_drawer.html.twig, edit_drawer.html.twig
  • 職級管理(level_index.html.twig
  • 職位セレクター(position_modal.html.twig, position_multi_modal.html.twig

会社管理

複数会社構造をサポート:

  • Corporation: 企業グループの最上位
  • Company: 傘下の会社。CommonTrait 内の corporation/company リレーションで関連付け
  • 管理画面: corporation.html.twigcompanyEdit.html.twig

キャッシュ

組織構造はセマンティックキャッシュ戦略を採用し、Doctrine のイベントリスナーでキャッシュの一貫性を自動維持します。

MIT ライセンスでオープンソース | Copyright © 2026 Doggy