fykosak/nette-orm
最新稳定版本:v0.5.0
Composer 安装命令:
composer require fykosak/nette-orm
包简介
README 文档
README
install
Create ORM model
<?php /** * @property-read string name * @property-read int event_id * @property-read \DateTimeInterface begin * @property-read \DateTimeInterface end * @note better typehinting for your IDE */ class ModelEvent extends AbstractModel { // you can define realtions public function getParticipants(): GroupedSelection { return $this->related('participant', 'event_id'); } // you can define own metods public function __toArray(): array { return [ 'eventId' => $this->event_id, 'begin' => $this->begin ? $this->begin->format('c') : null, 'end' => $this->end ? $this->end->format('c') : null, 'name' => $this->name, ]; } }
Create ORM service
<?php class ServiceEvent extends AbstractService { public function getNextEvents(): TypedTableSelection { return $this->getTable()->where('begin > NOW()'); } }
Register extension
orm: <table_name>: service: 'FQN of service' model: 'FQN of model' <another_table_name>: service: 'FQN of another service' model: 'FQN of another model'
extensions: orm: Fykosak\NetteORM\ORMExtension
Examples
TypedTableSelection is a regular selection you can use all methods like in nette DB Selection.
$query= $sericeEvent->getNextEvent(); $query->where('name','My cool event');
TypedTableSelection return ORM model instead of ActiveRow, but ORM model is a descendant of a ActiveRow.
$query= $sericeEvent->getNextEvent(); foreach($query as $event){ $event // event is a ModelEvent } $model = $sericeEvent->getNextEvent()->fetch(); // Model is a ModelEvent too.
Take care GroupedSelection still return ActiveRow, you can use static method createFromActiveRow
$query= $sericeEvent->getParticipants(); foreach($query as $row){ // $row is a ActiveRow $participant = ModelParticipant::createFromActiveRow($row); }
Define relations between Models by methods
class ModelParticipant extends AbstractModel { // use ActiveRow to resolve relations and next create a Model. public function getEvent(): ModelEvent { return ModelEvent::createFromActiveRow($this->event); } }
Now you can use ReferencedAccessor to access Model
$myModel // any model that has define single method returned ModelEvent $modelEvent = ReferencedAccessor::accessModel($myModel,ModelEvent::class);
统计信息
- 总下载量: 52.42k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: GPL-3.0-or-later
- 更新时间: 2021-03-09