PHPackages                             datado/data - 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. datado/data

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

datado/data
===========

PHP to SQL connection dsl

1.1.6(10y ago)41182MITPHP

Since Nov 5Pushed 10y ago1 watchersCompare

[ Source](https://github.com/datado/data)[ Packagist](https://packagist.org/packages/datado/data)[ RSS](/packages/datado-data/feed)WikiDiscussions master Synced today

READMEChangelog (1)DependenciesVersions (11)Used By (2)

DataDo Data [![Latest Stable Version](https://camo.githubusercontent.com/ad4a87f601b3e515776cb3007571213fb5dfeb4ba272942bce9b3263d54570e0/68747470733a2f2f706f7365722e707567782e6f72672f64617461646f2f646174612f762f737461626c65)](https://packagist.org/packages/datado/data) [![Total Downloads](https://camo.githubusercontent.com/24bd74758224768725d9b417e87dd15a20730d0fb0097de23c9c6dff165a5d35/68747470733a2f2f706f7365722e707567782e6f72672f64617461646f2f646174612f646f776e6c6f616473)](https://packagist.org/packages/datado/data) [![Latest Unstable Version](https://camo.githubusercontent.com/94008b3a909e802ebbdbe4cbaf7326033a47b71e51d12e376fbe56453716c2aa/68747470733a2f2f706f7365722e707567782e6f72672f64617461646f2f646174612f762f756e737461626c65)](https://packagist.org/packages/datado/data) [![License](https://camo.githubusercontent.com/e0fc9b12a42b5712e496a030cb965255d5ef568966e1acc1ff4617b1441c066c/68747470733a2f2f706f7365722e707567782e6f72672f64617461646f2f646174612f6c6963656e7365)](https://packagist.org/packages/datado/data)
=========================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================

[](#datado-data----)

DataDo Data is a way of easily communicating with a database without having to write sql queries.

How?
====

[](#how)

DataDo Data works through repositories. This means that for a certain collection (usually a SQL table) you would create a repository to interact with it. Now, I hear your concerns and you're asking yourself 'But if I do not have to write sql, how do I get my data from the database?'. That's where the trick comes in.

Getting Started
===============

[](#getting-started)

```

    /**
     * This is the entity we are going to use in this example.
     */
    class File {
        public $id;
        public $filePath;
        public $size;
        public $fileName;
    }

    // First we will have to connect to out database
    $pdo = new PDO('mysql:host=localhost;dbname=demo', 'username', 'secret_password');

    /* Then we create the repository we mentioned earlier. To be able to do this we need
     * some information:
     *
     * - The class of the entity we want to store or get from this repository
     * - The PDO connection to the database
     * - The name of the property that identifies this entity. This will be used when
     *     updating and inserting objects
     */
    $repository = new Repository(File::class, $pdo, 'id');
```

Using the Analysis Tool
-----------------------

[](#using-the-analysis-tool)

Of course right now this is not going to work. We didn't even create any tables in our database. To help us do that the repository has a convenient tool. Run it like this:

```
    $repository->checkDatabase();
```

If you view this output in your browser you should see an overview of the connection between your class and the database. Most of the *Properties* rows are read because you haven't created the table or columns. You can use this overview as a reference when doing that.

Inserting Data
--------------

[](#inserting-data)

So now we've created our database and tables we're ready to insert some data.

```
    // Let's create a file object for this current script
    $file = new File();
    $file->filePath = __FILE__;
    $file->size = filesize(__FILE__);
    $file->fileName = basename(__FILE__);

    // Now we can use the repository we created earlier to save this file to the database.
    $repository->save($file);

    // Now note that this file has been assigned an id
    echo $file->id;
```

Getting Data
------------

[](#getting-data)

Getting data from the database is a little bit more tricky. However, this is also where the strength of the repository is.

### EQL

[](#eql)

DataDo works using the **Easiest Querying Language** this is a simple querying mechanism that is developed for this project. It works by calling methods on the repository with a certain name.

```
    // Here's a simple example
    $myFile = $repository->getByFilePath(__FILE__);

    // Let's print the result
    var_dump($myFile);
```

If you ran the code above in the same file as the code from section *Inserting Data* then you should have received that object you just created back from the database. The way this works is you can call non-existing methods on the repository as long as you stick to a certain syntax: (get, find or delete), optional: (fields), optional: By(fields).

Let's take a look at some more examples.

```
    // The 'find' query will return a list of all entities that match your query
    $files = $repository->findByFileName('index.php');

    /* You can also request only specific fields. You will then still get a File
     * object but only the requested fields will be filled out.
     */
    $paths = $repository->findFilePathByFileName();

    /* The 'get' query if very much like the 'find' query except this query will
     * only return the first match.
     */
    $myFile = $repository->getFileByFileSizeAndFileNameLike(1032, '%.php');

     /* Then finally there is the 'delete' query. This query does not accept the
      * selection fields. (The bit before the By keyword). It will delete all
      * matches of the query.
      * The return value of this query is the number of affected rows.
      */

     // Delete all files
     echo $repository->delete(); // Or $repository->deleteAll();

     // Delete specific files
     $repository->deleteById(235);
```

#### Keywords

[](#keywords)

- **delete** - Create a query that will delete all matches
- **find** - Create a query that will return a list of matches
- **get** - Create a query that will return a single match
- **Distinct** - Only return distinct values. Example: findDistinctUsername();
- **By** - Marks the start of the filter section
- Filter: **And** - Represents the boolean *and* operator for two filters
- Filter: **Or** - Represents the boolean *or* operator for two filters
- Filter: **Like** - Represents the SQL *LIKE* operator. This takes an argument.

#### Property Projection

[](#property-projection)

To only fetch certain properties you can follow the query mode (delete, find or get) by the properties you want to get separated by the And keyword.

**Note that you must capitalize the first letter of the field names you need.**

```
$repository->getIdAndFilePathAndFileSize();
```

License
=======

[](#license)

This project is licensed under the MIT license

```
Copyright (c) 2015 Thomas Biesaart

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

```

###  Health Score

31

—

LowBetter than 66% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity14

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity69

Established project with proven stability

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 ~10 days

Recently: every ~22 days

Total

10

Last Release

3801d ago

Major Versions

0.0.0 → 1.0.02015-11-07

### Community

Maintainers

![](https://www.gravatar.com/avatar/491ba0ab111aed73f7698dee0c48727b5cf7dd85bb35591580d54c3e29af02ed?d=identicon)[thomas.biesaart](/maintainers/thomas.biesaart)

### Embed Badge

![Health badge](/badges/datado-data/health.svg)

```
[![Health](https://phpackages.com/badges/datado-data/health.svg)](https://phpackages.com/packages/datado-data)
```

###  Alternatives

[jdorn/sql-formatter

a PHP SQL highlighting library

3.9k117.2M118](/packages/jdorn-sql-formatter)[propel/propel1

Propel is an open-source Object-Relational Mapping (ORM) for PHP5.

8351.6M87](/packages/propel-propel1)[pgvector/pgvector

pgvector support for PHP

198741.5k12](/packages/pgvector-pgvector)[jfelder/oracledb

Oracle DB driver for Laravel

11518.4k](/packages/jfelder-oracledb)

PHPackages © 2026

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