PHPackages                             graphaware/neoclient-timetree - 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. [Database &amp; ORM](/categories/database)
4. /
5. graphaware/neoclient-timetree

AbandonedLibrary[Database &amp; ORM](/categories/database)

graphaware/neoclient-timetree
=============================

PHP NeoClient extension for the GraphAware TimeTree Neo4j plugin

1.0.4(11y ago)4631AGPLv3PHP

Since Feb 18Pushed 11y ago21 watchersCompare

[ Source](https://github.com/graphaware/neoclient-timetree-extension)[ Packagist](https://packagist.org/packages/graphaware/neoclient-timetree)[ RSS](/packages/graphaware-neoclient-timetree/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (6)Used By (0)

TimeTree extension for PHP NeoClient
------------------------------------

[](#timetree-extension-for-php-neoclient)

This library extends [Neo4j PHP NeoClient](https://github.com/neoxygen/neo4j-neoclient) by adding convenient methods for working with the [GraphAware TimeTree Plugin](https://github.com/graphaware/neo4j-timetree).

The library mixes at some point the high valuable features of the TimeTree plugin with Cypher to keep consistency regarding response result used by NeoClient that permits to use node objects.

Installation and setup
----------------------

[](#installation-and-setup)

You need to require the library in your dependencies and register the extension in NeoClient :

composer.json

```
"require": {
    "neoxygen/neoclient": "~2.1",
    "graphaware/neoclient-timetree": "~1.0"
    }
```

Register the extension when building the client :

```
use Neoxygen\NeoClient\ClientBuilder;

$client = ClientBuilder::create()
    ->addDefaultLocalConnection()
    ->setAutoFormatResponse(true)
    ->registerExtension('graphaware_timetree', 'GraphAware\NeoClientExtension\TimeTree\TimeTreeExtension')
    ->build();
```

Note that the extension name `graphaware-timetree` can be changed to whatever you want.

### Note

[](#note)

As NeoClient is natively built for working with multiple Neo4j instances, the last parameters of each of the below methods is the connection alias string (default connection is used when omitted).

### Adding schema indexes for the TimeTree time nodes

[](#adding-schema-indexes-for-the-timetree-time-nodes)

With this simple method, it will add the schema indexes on the Year, Month, Day, Hour, Minute, Second and Millisecond nodes.

```
$client->createTimeTreeIndexes();
```

Generally this should be runned only once when building your application.

Usage
-----

[](#usage)

For all the following methods, the `timestamp` is optional and the "NOW" timestamp will be used when omitted.

### Getting a time instant node

[](#getting-a-time-instant-node)

By simply passing a timestamp to the following method, you'll get the time instant node id and all the time tree created magically :

```
$today = $client->getTimeNode(time());
```

The default resolution of the TimeTree plugin is `day`, you can increase or decrease the resolution by using the timetree constants provided by the extension :

```
use GraphAware\NeoClientExtension\TimeTree\TimeTreeExtension;

$now = $client->getTimeNode(time(), TimeTreeExtension::TIMETREE_RESOLUTION_MILLISECOND);
```

### Adding a node to a time instant

[](#adding-a-node-to-a-time-instant)

You need to pass the node id of the event along with the time and the desired relationship type. Note that the relationship is directed from the time instant node to the event node.

```
// Example for adding a node to a timeTree after its creation :

$q = 'CREATE (n:SuperEvent) RETURN n';
$result = $client->sendCypherQuery($q)->getResult();
$nodeId = $result->get('n')->getId();

$client->addNodeToTime($nodeId, time(), 'EVENT_OCCUR_ON');
// Returns true
```

### Retrieving events nodes for a time :

[](#retrieving-events-nodes-for-a-time-)

This mixes the timetree functionality with Cypher in order to retrieve all the nodes informations in your objects, like labels, etc...

```
$result = $client->getTimeEvents(time())->getResult();

// Returns you a collection of nodes, the identifier of the collection is "n"
$events = $result->get('n');

// OR

$events = $result->getNodes();
```

### Retrieving event nodes that occur between a time range

[](#retrieving-event-nodes-that-occur-between-a-time-range)

You should here specify the start time and the end time is default to `NOW`.

```
$result = $client->getTimeEventsInRange(112556325)->getResult();
// Again the identifier is n

$events = $result->get('n');
```

You can also specify the resolution, for e.g. to hours :

```
$result = $client->getTimeEventsInRange(
    112556325,
    time(),
    TimeTreeExtension::TIMETREE_RESOLUTION_HOUR
    )->getResult();
// Again the identifier is n

$events = $result->get('n');
```

---

### Adding an event to a time tree with specified rootNodeId

[](#adding-an-event-to-a-time-tree-with-specified-rootnodeid)

```
$client->addNodeToTimeForRoot($rootNodeId, $eventNodeId, $time, $relationshipType, $resolution, $connection);
```

### Retrieving events for time and specified rootNodeId

[](#retrieving-events-for-time-and-specified-rootnodeid)

```
$events = $client->getTimeEventsForRoot($rootNodeId, $time);
```

### To-Do :

[](#to-do-)

- Support for more TT features
- Support for multiple tree roots
- More Cypher/TT integration for e.g. retrieving nodes by label attached to times
- User defined method for retrieving events (Cypher or TT)

### Tests :

[](#tests-)

Run the test suite with PHPUnit :

```
./vendor/bin/phpunit
```

License
-------

[](#license)

Copyright (c) 2014 GraphAware

GraphAware is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see .

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity67

Established project with proven stability

 Bus Factor1

Top contributor holds 100% 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.

###  Release Activity

Cadence

Every ~21 days

Total

5

Last Release

4016d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/c66009f0f147bb7dfcfbbd6837176b2fe6c6e2cdcf82d9ad07ab7d7aa47735f4?d=identicon)[ikwattro](/maintainers/ikwattro)

---

Top Contributors

[![ikwattro](https://avatars.githubusercontent.com/u/1222009?v=4)](https://github.com/ikwattro "ikwattro (10 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/graphaware-neoclient-timetree/health.svg)

```
[![Health](https://phpackages.com/badges/graphaware-neoclient-timetree/health.svg)](https://phpackages.com/packages/graphaware-neoclient-timetree)
```

###  Alternatives

[doctrine/orm

Object-Relational-Mapper for PHP

10.2k285.3M6.2k](/packages/doctrine-orm)[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k115.1M102](/packages/jdorn-sql-formatter)[illuminate/database

The Illuminate Database package.

2.8k52.4M9.3k](/packages/illuminate-database)[mongodb/mongodb

MongoDB driver library

1.6k64.0M545](/packages/mongodb-mongodb)[ramsey/uuid-doctrine

Use ramsey/uuid as a Doctrine field type.

90340.3M211](/packages/ramsey-uuid-doctrine)[reliese/laravel

Reliese Components for Laravel Framework code generation.

1.7k3.4M16](/packages/reliese-laravel)

PHPackages © 2026

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