<?php namespace Ulmus\Ldap; use Ulmus\{ Ulmus, EventTrait, Query, Common\EntityResolver, Common\EntityField }; use Ulmus\Annotation\Classes\{ Method, Table, Collation, }; use Ulmus\Annotation\Property\{ Field, Filter, Relation, OrderBy, Where, Join, Virtual, On, WithJoin, }; use Ulmus\Annotation\Property\Field\{ Id, ForeignKey, CreatedAt, UpdatedAt, Datetime as DateTime, Date, Time, Bigint, Tinyint, Text, Mediumtext, Longtext, }; use Ulmus\Annotation\Property\Relation\{ Ignore as RelationIgnore }; trait EntityTrait { use \Ulmus\EntityTrait; /** * @Ignore */ public static function resolveEntity() : EntityResolver { return Ulmus::resolveEntity(static::class); } /** * @Ignore */ public static function repository(string $alias = Repository::DEFAULT_ALIAS) : Repository { return new Repository(static::class, $alias); } /** * @Ignore */ public static function field($name, ? string $alias = null) : EntityField { return new EntityField(static::class, $name, $alias ?: Repository::DEFAULT_ALIAS, Ulmus::resolveEntity(static::class)); } /** * @Ignore */ public static function fields(array $fields, ? string $alias = null) : string { return implode(', ', array_map(function($item) use ($alias){ return static::field($item, $alias); }, $fields)); } }