flsouto/fstore

There is no license information available for the latest version (1.0.5) of this package.

Library for storing relational data in the file system

1.0.5 2021-02-04 21:11 UTC

This package is not auto-updated.

Last update: 2024-04-26 12:15:53 UTC


README

Accessing a Database

A database is nothing more than a directory. So all you have to do is specify the path to that directory when creating a database instance. If the directory does not exist, it will be created when the first row is inserted.

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');

Accessing a Table

You can get a table instance from a database by calling the table method. If the table does not exist, it will be created once the first row is inserted.

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
// creates users table on the fly
$products = $db->table('products');

Inserting and Retrieving a Row

The table object provides an insert method which accepts an associative array and returns the automatically generated row id:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$products = $db->table('products');
$id = $products->insert([
    'name' => 'Pencil',
    'description' => 'Can be used to write things down.',
    'price' => 1.99
]);

$new_row = $products->get($id);

print_r($new_row);

Outputs:

Array
(
    [name] => Pencil
    [description] => Can be used to write things down.
    [price] => 1.99
)

Getting the Insert Date Based on the Row's ID

The insert method of a table object generates an id which contains the timestamp itself so there is no need to create a "date_added" column. But, in order to avoid conflicts when inserting multiple rows on the same table at the same time the generated id has the miliseconds as well as a counter which guarantees that the ids will always be different, even if inserted on the same nanosecond! So, in order to take the corrrect date/time from this hash you have to remove those extra numbers. The good news is that there is a $table->date method which does just that for you:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$products = $db->table('products');
$id = $products->insert([
    'name' => 'Pencil',
    'description' => 'Can be used to write things down.',
    'price' => 1.99
]);

$date = $products->date('d/m/Y H:i', $id);

echo $date;

Outputs:

29/01/2021 21:55

Updating a Record

Updating a table record is pretty straightforward: just call update and pass it an associative array followed by the row id:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$products = $db->table('products');

$id = $products->insert([
    'name' => 'Pencil',
    'description' => 'Can be used to write things down.',
    'price' => 1.99
]);

$products->update(['price'=>1.5], $id);

$row = $products->get($id);

print_r($row);

Outputs:

Array
(
    [name] => Pencil
    [description] => Can be used to write things down.
    [price] => 1.5
)

Deleting a Record

To delete a record simply call $table->delete($id), see example:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$products = $db->table('products');

$id = $products->insert([
    'name' => 'Pencil',
    'description' => 'Can be used to write things down.',
    'price' => 1.99
]);

$products->delete($id);

Retrieving all IDs from a Table

Use $table->ids() to get all ids:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(['a','b','c','d'] as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$ids = $table->ids();

print_r($ids);

Outputs:

Array
(
    [0] => 16119677237230
    [1] => 16119677237231
    [2] => 16119677237233
    [3] => 16119677237234
    [4] => 16119677237237
    [5] => 16119677237238
    [6] => 16119677237239
    [7] => 16119677237241
    [8] => 16119677237242
    [9] => 16119677237243
    [10] => 16119677237244
    [11] => 16119677237246
    [12] => 16119677237248
    [13] => 16119677237249
    [14] => 16119677237250
    [15] => 16119677237252
    [16] => 16119677237253
    [17] => 16119677237254
    [18] => 16119677237255
    [19] => 16119677237257
    [20] => 16119677237258
    [21] => 16119677237259
    [22] => 16119677237261
    [23] => 16119677237262
    [24] => 16119677237263
    [25] => 16119677237264
    [26] => 16119677237266
    [27] => 16119677237267
    [28] => 16119677237268
    [29] => 16119677237270
    [30] => 16119677237273
    [31] => 16119677237275
    [32] => 16119677237276
    [33] => 16119677237277
    [34] => 16119677237279
    [35] => 16119677237280
    [36] => 16119677237281
    [37] => 16119677237282
    [38] => 16119677237284
    [39] => 16119677237285
    [40] => 16119677237287
    [41] => 16119677237288
    [42] => 16119677237289
    [43] => 16119677237290
    [44] => 16119677237292
    [45] => 16119677237293
    [46] => 16119677237294
    [47] => 16119677237296
    [48] => 16119677237297
    [49] => 16119677237298
    [50] => 16119677237299
    [51] => 16119677237301
    [52] => 16119677237302
    [53] => 16119677237303
    [54] => 16119677237305
    [55] => 16119677237306
    [56] => 16119677237309
    [57] => 16119677237310
    [58] => 16119677237311
    [59] => 16119677237313
    [60] => 16119677237314
    [61] => 16119677237316
    [62] => 16119677237317
    [63] => 16119677237318
    [64] => 16119677237320
    [65] => 16119677237321
    [66] => 16119677237322
    [67] => 16119677237324
    [68] => 16119677237325
    [69] => 16119677237326
    [70] => 16119677237328
    [71] => 16119677237329
    [72] => 16119677237331
    [73] => 16119677237332
    [74] => 16119677237333
    [75] => 16119677237335
    [76] => 16119677237336
    [77] => 16119677237337
    [78] => 16119677237339
    [79] => 16119677237340
    [80] => 16119677237341
    [81] => 16119677237343
    [82] => 16119677237366
    [83] => 16119677237368
    [84] => 16119677237369
    [85] => 16119677237371
    [86] => 16119677237372
    [87] => 16119677237373
    [88] => 16119677237375
    [89] => 16119677237376
    [90] => 16119677237377
    [91] => 16119677237379
    [92] => 16119677237380
    [93] => 16119677237381
    [94] => 16119677237382
    [95] => 16119677237384
    [96] => 16119677237385
    [97] => 16119677237386
    [98] => 16119677237388
    [99] => 16119677237389
    [100] => 16119677237390
    [101] => 16119677237392
    [102] => 16119677237393
    [103] => 16119677237394
    [104] => 16119677237395
    [105] => 16119677237397
    [106] => 16119677237398
    [107] => 16119677237399
    [108] => 16119677237405
    [109] => 16119677237406
    [110] => 16119677237407
    [111] => 16119677237409
    [112] => 16119677237410
    [113] => 16119677237411
    [114] => 16119677237413
    [115] => 16119677237414
    [116] => 16119677237415
    [117] => 16119677237417
    [118] => 16119677237418
    [119] => 16119677237419
    [120] => 16119677237421
    [121] => 16119677237422
    [122] => 16119677237423
    [123] => 16119677237425
    [124] => 16119677237426
    [125] => 16119677237427
    [126] => 16119677237429
    [127] => 16119677237430
    [128] => 16119677237431
    [129] => 16119677237433
    [130] => 16119677237434
    [131] => 16119677237435
    [132] => 16119677237437
    [133] => 16119677237438
    [134] => 16119677237444
    [135] => 16119677237446
    [136] => 16119677237447
    [137] => 16119677237448
    [138] => 16119677237450
    [139] => 16119677237451
    [140] => 16119677237452
    [141] => 16119677237454
    [142] => 16119677237455
    [143] => 16119677237456
    [144] => 16119677237458
    [145] => 16119677237459
    [146] => 16119677237461
    [147] => 16119677237462
    [148] => 16119677237463
    [149] => 16119677237465
    [150] => 16119677237466
    [151] => 16119677237467
    [152] => 16119677237469
    [153] => 16119677237470
    [154] => 16119677237471
    [155] => 16119677237473
    [156] => 16119677237474
    [157] => 16119677237475
    [158] => 16119677237476
    [159] => 16119677237478
    [160] => 16119680053466
    [161] => 16119680053467
    [162] => 16119680053468
    [163] => 16119680053470
    [164] => 16119680053474
    [165] => 16119680053476
    [166] => 16119680053477
    [167] => 16119680053479
    [168] => 16119680053480
    [169] => 16119680053481
    [170] => 16119680053482
    [171] => 16119680053484
    [172] => 16119680053485
    [173] => 16119680053486
    [174] => 16119680053488
    [175] => 16119680053489
    [176] => 16119680053490
    [177] => 16119680053492
    [178] => 16119680053493
    [179] => 16119680053494
    [180] => 16119680053496
    [181] => 16119680053497
    [182] => 16119680053498
    [183] => 16119680053500
    [184] => 16119680053501
    [185] => 16119680053502
    [186] => 16119680053503
    [187] => 16119680053505
    [188] => 16119680053506
    [189] => 16119680053507
    [190] => 16119680053510
    [191] => 16119680053511
    [192] => 16119680053512
    [193] => 16119680053514
    [194] => 16119680053515
    [195] => 16119680053516
    [196] => 16119680053518
    [197] => 16119680053519
    [198] => 16119680053520
    [199] => 16119680053522
    [200] => 16119680053523
    [201] => 16119680053524
    [202] => 16119680053526
    [203] => 16119680053527
    [204] => 16119680053528
    [205] => 16119680053530
    [206] => 16119680053531
    [207] => 16119680053532
    [208] => 16119680053534
    [209] => 16119680053535
    [210] => 16119680053536
    [211] => 16119680053538
    [212] => 16119680053539
    [213] => 16119680053540
    [214] => 16119680053542
    [215] => 16119680053543
    [216] => 16119680053545
    [217] => 16119680053547
    [218] => 16119680053548
    [219] => 16119680053549
    [220] => 16119680053551
    [221] => 16119680053552
    [222] => 16119680053553
    [223] => 16119680053555
    [224] => 16119680053556
    [225] => 16119680053557
    [226] => 16119680053559
    [227] => 16119680053560
    [228] => 16119680053562
    [229] => 16119680053563
    [230] => 16119680053564
    [231] => 16119680053566
    [232] => 16119680053567
    [233] => 16119680053568
    [234] => 16119680053570
    [235] => 16119680053571
    [236] => 16119680053572
    [237] => 16119680053574
    [238] => 16119680053575
    [239] => 16119680053577
    [240] => 16119680053578
    [241] => 16119680053579
    [242] => 16119680053634
    [243] => 16119680053635
    [244] => 16119680053637
    [245] => 16119680053638
    [246] => 16119680053639
    [247] => 16119680053641
    [248] => 16119680053642
    [249] => 16119680053643
    [250] => 16119680053645
    [251] => 16119680053646
    [252] => 16119680053647
    [253] => 16119680053649
    [254] => 16119680053650
    [255] => 16119680053651
    [256] => 16119680053653
    [257] => 16119680053654
    [258] => 16119680053655
    [259] => 16119680053657
    [260] => 16119680053658
    [261] => 16119680053659
    [262] => 16119680053661
    [263] => 16119680053662
    [264] => 16119680053663
    [265] => 16119680053665
    [266] => 16119680053666
    [267] => 16119680053668
    [268] => 16119680053676
    [269] => 16119680053677
    [270] => 16119680053679
    [271] => 16119680053680
    [272] => 16119680053681
    [273] => 16119680053683
    [274] => 16119680053684
    [275] => 16119680053685
    [276] => 16119680053687
    [277] => 16119680053688
    [278] => 16119680053690
    [279] => 16119680053691
    [280] => 16119680053692
    [281] => 16119680053694
    [282] => 16119680053695
    [283] => 16119680053696
    [284] => 16119680053698
    [285] => 16119680053699
    [286] => 16119680053700
    [287] => 16119680053702
    [288] => 16119680053703
    [289] => 16119680053704
    [290] => 16119680053706
    [291] => 16119680053707
    [292] => 16119680053708
    [293] => 16119680053710
    [294] => 16119680053714
    [295] => 16119680053716
    [296] => 16119680053717
    [297] => 16119680053718
    [298] => 16119680053720
    [299] => 16119680053721
    [300] => 16119680053723
    [301] => 16119680053724
    [302] => 16119680053725
    [303] => 16119680053727
    [304] => 16119680053728
    [305] => 16119680053730
    [306] => 16119680053731
    [307] => 16119680053732
    [308] => 16119680053734
    [309] => 16119680053735
    [310] => 16119680053736
    [311] => 16119680053737
    [312] => 16119680053739
    [313] => 16119680053740
    [314] => 16119680053741
    [315] => 16119680053743
    [316] => 16119680053744
    [317] => 16119680053745
    [318] => 16119680053747
    [319] => 16119680053748
    [320] => 16119680424592
    [321] => 16119680424594
    [322] => 16119680424595
    [323] => 16119680424596
    [324] => 16119680424604
    [325] => 16119680424605
    [326] => 16119680424606
    [327] => 16119680424608
    [328] => 16119680424609
    [329] => 16119680424610
    [330] => 16119680424612
    [331] => 16119680424613
    [332] => 16119680424615
    [333] => 16119680424616
    [334] => 16119680424617
    [335] => 16119680424619
    [336] => 16119680424620
    [337] => 16119680424621
    [338] => 16119680424622
    [339] => 16119680424624
    [340] => 16119680424625
    [341] => 16119680424626
    [342] => 16119680424628
    [343] => 16119680424629
    [344] => 16119680424630
    [345] => 16119680424632
    [346] => 16119680424633
    [347] => 16119680424634
    [348] => 16119680424636
    [349] => 16119680424637
    [350] => 16119680424639
    [351] => 16119680424641
    [352] => 16119680424642
    [353] => 16119680424644
    [354] => 16119680424645
    [355] => 16119680424646
    [356] => 16119680424647
    [357] => 16119680424649
    [358] => 16119680424650
    [359] => 16119680424651
    [360] => 16119680424653
    [361] => 16119680424654
    [362] => 16119680424655
    [363] => 16119680424657
    [364] => 16119680424658
    [365] => 16119680424659
    [366] => 16119680424661
    [367] => 16119680424662
    [368] => 16119680424663
    [369] => 16119680424665
    [370] => 16119680424666
    [371] => 16119680424667
    [372] => 16119680424669
    [373] => 16119680424670
    [374] => 16119680424671
    [375] => 16119680424673
    [376] => 16119680424675
    [377] => 16119680424677
    [378] => 16119680424678
    [379] => 16119680424679
    [380] => 16119680424681
    [381] => 16119680424682
    [382] => 16119680424683
    [383] => 16119680424685
    [384] => 16119680424686
    [385] => 16119680424687
    [386] => 16119680424689
    [387] => 16119680424690
    [388] => 16119680424691
    [389] => 16119680424693
    [390] => 16119680424694
    [391] => 16119680424695
    [392] => 16119680424697
    [393] => 16119680424698
    [394] => 16119680424699
    [395] => 16119680424700
    [396] => 16119680424702
    [397] => 16119680424703
    [398] => 16119680424704
    [399] => 16119680424706
    [400] => 16119680424707
    [401] => 16119680424708
    [402] => 16119680424785
    [403] => 16119680424787
    [404] => 16119680424788
    [405] => 16119680424790
    [406] => 16119680424791
    [407] => 16119680424792
    [408] => 16119680424794
    [409] => 16119680424795
    [410] => 16119680424796
    [411] => 16119680424798
    [412] => 16119680424799
    [413] => 16119680424800
    [414] => 16119680424802
    [415] => 16119680424803
    [416] => 16119680424804
    [417] => 16119680424806
    [418] => 16119680424807
    [419] => 16119680424808
    [420] => 16119680424809
    [421] => 16119680424811
    [422] => 16119680424812
    [423] => 16119680424813
    [424] => 16119680424815
    [425] => 16119680424816
    [426] => 16119680424817
    [427] => 16119680424819
    [428] => 16119680424827
    [429] => 16119680424828
    [430] => 16119680424830
    [431] => 16119680424831
    [432] => 16119680424832
    [433] => 16119680424834
    [434] => 16119680424835
    [435] => 16119680424836
    [436] => 16119680424838
    [437] => 16119680424839
    [438] => 16119680424841
    [439] => 16119680424842
    [440] => 16119680424843
    [441] => 16119680424845
    [442] => 16119680424846
    [443] => 16119680424847
    [444] => 16119680424849
    [445] => 16119680424850
    [446] => 16119680424851
    [447] => 16119680424853
    [448] => 16119680424854
    [449] => 16119680424855
    [450] => 16119680424857
    [451] => 16119680424858
    [452] => 16119680424859
    [453] => 16119680424861
    [454] => 16119680424865
    [455] => 16119680424866
    [456] => 16119680424867
    [457] => 16119680424869
    [458] => 16119680424870
    [459] => 16119680424871
    [460] => 16119680424873
    [461] => 16119680424874
    [462] => 16119680424875
    [463] => 16119680424877
    [464] => 16119680424878
    [465] => 16119680424879
    [466] => 16119680424881
    [467] => 16119680424882
    [468] => 16119680424883
    [469] => 16119680424885
    [470] => 16119680424886
    [471] => 16119680424887
    [472] => 16119680424889
    [473] => 16119680424890
    [474] => 16119680424891
    [475] => 16119680424893
    [476] => 16119680424894
    [477] => 16119680424895
    [478] => 16119680424897
    [479] => 16119680424898
    [480] => 16119681052377
    [481] => 16119681052379
    [482] => 16119681052380
    [483] => 16119681052382
)

Retrieving only first 10 IDs from a Table

Use $table->ids(X) to get the first X ids:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(range('a','z') as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$first_10_ids = $table->ids(10);

print_r($first_10_ids);

Outputs:

Array
(
    [0] => 16119677237230
    [1] => 16119677237231
    [2] => 16119677237233
    [3] => 16119677237234
    [4] => 16119677237237
    [5] => 16119677237238
    [6] => 16119677237239
    [7] => 16119677237241
    [8] => 16119677237242
    [9] => 16119677237243
)

Retrieving only the LAST 10 IDs from a Table

Use $table->ids(-X) to get the last X ids:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(range('a','z') as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$last_10_ids = $table->ids(-10);

print_r($last_10_ids);

Outputs:

Array
(
    [0] => 16119681052466
    [1] => 16119681052464
    [2] => 16119681052463
    [3] => 16119681052462
    [4] => 16119681052460
    [5] => 16119681052459
    [6] => 16119681052458
    [7] => 16119681052456
    [8] => 16119681052455
    [9] => 16119681052454
)

Querying a Table using Filters

The table object provides a query builder which can be created via $table->query(). This query builder allows us to filter results by means of a $query->filter() function which accepts a callback. The following example illustrates this better:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(range('a','z') as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$q = $table->query();

// only rows that satisfy certain conditions
$q->filter(function($row){
    return in_array($row['letter'], ['f','a','b','i','o']);
});
// fetch those rows
$rows = $q->rows();

print_r($rows);

Outputs:

Array
(
    [16119677237230] => Array
        (
            [letter] => a
        )

    [16119677237231] => Array
        (
            [letter] => b
        )

    [16119677237237] => Array
        (
            [letter] => a
        )

    [16119677237238] => Array
        (
            [letter] => b
        )

    [16119677237243] => Array
        (
            [letter] => f
        )

    [16119677237248] => Array
        (
            [letter] => i
        )

    [16119677237255] => Array
        (
            [letter] => o
        )

    [16119677237273] => Array
        (
            [letter] => a
        )

    [16119677237275] => Array
        (
            [letter] => b
        )

    [16119677237280] => Array
        (
            [letter] => f
        )

    [16119677237284] => Array
        (
            [letter] => i
        )

    [16119677237292] => Array
        (
            [letter] => o
        )

    [16119677237309] => Array
        (
            [letter] => a
        )

    [16119677237310] => Array
        (
            [letter] => b
        )

    [16119677237316] => Array
        (
            [letter] => f
        )

    [16119677237320] => Array
        (
            [letter] => i
        )

    [16119677237328] => Array
        (
            [letter] => o
        )

    [16119677237366] => Array
        (
            [letter] => a
        )

    [16119677237368] => Array
        (
            [letter] => b
        )

    [16119677237373] => Array
        (
            [letter] => f
        )

    [16119677237377] => Array
        (
            [letter] => i
        )

    [16119677237385] => Array
        (
            [letter] => o
        )

    [16119677237405] => Array
        (
            [letter] => a
        )

    [16119677237406] => Array
        (
            [letter] => b
        )

    [16119677237411] => Array
        (
            [letter] => f
        )

    [16119677237415] => Array
        (
            [letter] => i
        )

    [16119677237423] => Array
        (
            [letter] => o
        )

    [16119677237444] => Array
        (
            [letter] => a
        )

    [16119677237446] => Array
        (
            [letter] => b
        )

    [16119677237451] => Array
        (
            [letter] => f
        )

    [16119677237455] => Array
        (
            [letter] => i
        )

    [16119677237463] => Array
        (
            [letter] => o
        )

    [16119680053466] => Array
        (
            [letter] => a
        )

    [16119680053467] => Array
        (
            [letter] => b
        )

    [16119680053474] => Array
        (
            [letter] => a
        )

    [16119680053476] => Array
        (
            [letter] => b
        )

    [16119680053481] => Array
        (
            [letter] => f
        )

    [16119680053485] => Array
        (
            [letter] => i
        )

    [16119680053493] => Array
        (
            [letter] => o
        )

    [16119680053510] => Array
        (
            [letter] => a
        )

    [16119680053511] => Array
        (
            [letter] => b
        )

    [16119680053516] => Array
        (
            [letter] => f
        )

    [16119680053520] => Array
        (
            [letter] => i
        )

    [16119680053528] => Array
        (
            [letter] => o
        )

    [16119680053545] => Array
        (
            [letter] => a
        )

    [16119680053547] => Array
        (
            [letter] => b
        )

    [16119680053552] => Array
        (
            [letter] => f
        )

    [16119680053556] => Array
        (
            [letter] => i
        )

    [16119680053564] => Array
        (
            [letter] => o
        )

    [16119680053634] => Array
        (
            [letter] => a
        )

    [16119680053635] => Array
        (
            [letter] => b
        )

    [16119680053641] => Array
        (
            [letter] => f
        )

    [16119680053645] => Array
        (
            [letter] => i
        )

    [16119680053653] => Array
        (
            [letter] => o
        )

    [16119680053676] => Array
        (
            [letter] => a
        )

    [16119680053677] => Array
        (
            [letter] => b
        )

    [16119680053683] => Array
        (
            [letter] => f
        )

    [16119680053687] => Array
        (
            [letter] => i
        )

    [16119680053695] => Array
        (
            [letter] => o
        )

    [16119680053714] => Array
        (
            [letter] => a
        )

    [16119680053716] => Array
        (
            [letter] => b
        )

    [16119680053721] => Array
        (
            [letter] => f
        )

    [16119680053725] => Array
        (
            [letter] => i
        )

    [16119680053734] => Array
        (
            [letter] => o
        )

    [16119680424592] => Array
        (
            [letter] => a
        )

    [16119680424594] => Array
        (
            [letter] => b
        )

    [16119680424604] => Array
        (
            [letter] => a
        )

    [16119680424605] => Array
        (
            [letter] => b
        )

    [16119680424610] => Array
        (
            [letter] => f
        )

    [16119680424615] => Array
        (
            [letter] => i
        )

    [16119680424622] => Array
        (
            [letter] => o
        )

    [16119680424639] => Array
        (
            [letter] => a
        )

    [16119680424641] => Array
        (
            [letter] => b
        )

    [16119680424646] => Array
        (
            [letter] => f
        )

    [16119680424650] => Array
        (
            [letter] => i
        )

    [16119680424658] => Array
        (
            [letter] => o
        )

    [16119680424675] => Array
        (
            [letter] => a
        )

    [16119680424677] => Array
        (
            [letter] => b
        )

    [16119680424682] => Array
        (
            [letter] => f
        )

    [16119680424686] => Array
        (
            [letter] => i
        )

    [16119680424694] => Array
        (
            [letter] => o
        )

    [16119680424785] => Array
        (
            [letter] => a
        )

    [16119680424787] => Array
        (
            [letter] => b
        )

    [16119680424792] => Array
        (
            [letter] => f
        )

    [16119680424796] => Array
        (
            [letter] => i
        )

    [16119680424804] => Array
        (
            [letter] => o
        )

    [16119680424827] => Array
        (
            [letter] => a
        )

    [16119680424828] => Array
        (
            [letter] => b
        )

    [16119680424834] => Array
        (
            [letter] => f
        )

    [16119680424838] => Array
        (
            [letter] => i
        )

    [16119680424846] => Array
        (
            [letter] => o
        )

    [16119680424865] => Array
        (
            [letter] => a
        )

    [16119680424866] => Array
        (
            [letter] => b
        )

    [16119680424871] => Array
        (
            [letter] => f
        )

    [16119680424875] => Array
        (
            [letter] => i
        )

    [16119680424883] => Array
        (
            [letter] => o
        )

    [16119681052377] => Array
        (
            [letter] => a
        )

    [16119681052379] => Array
        (
            [letter] => b
        )

    [16119681052393] => Array
        (
            [letter] => a
        )

    [16119681052395] => Array
        (
            [letter] => b
        )

    [16119681052401] => Array
        (
            [letter] => f
        )

    [16119681052405] => Array
        (
            [letter] => i
        )

    [16119681052413] => Array
        (
            [letter] => o
        )

    [16119681052432] => Array
        (
            [letter] => a
        )

    [16119681052433] => Array
        (
            [letter] => b
        )

    [16119681052439] => Array
        (
            [letter] => f
        )

    [16119681052443] => Array
        (
            [letter] => i
        )

    [16119681052451] => Array
        (
            [letter] => o
        )

    [16119681052470] => Array
        (
            [letter] => a
        )

    [16119681052472] => Array
        (
            [letter] => b
        )

    [16119681052478] => Array
        (
            [letter] => f
        )

    [16119681052482] => Array
        (
            [letter] => i
        )

    [16119681052490] => Array
        (
            [letter] => o
        )

)

Querying The Last X Rows...

Call the limit method on a query object and pass it a negative number. See example:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(range('a','z') as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$q = $table->query();

// the last ten
$q->limit(-10);

// fetch them
$rows = $q->rows();

print_r($rows);

Outputs:

Array
(
    [16119681052646] => Array
        (
            [letter] => z
        )

    [16119681052644] => Array
        (
            [letter] => y
        )

    [16119681052643] => Array
        (
            [letter] => x
        )

    [16119681052642] => Array
        (
            [letter] => w
        )

    [16119681052640] => Array
        (
            [letter] => v
        )

    [16119681052639] => Array
        (
            [letter] => u
        )

    [16119681052638] => Array
        (
            [letter] => t
        )

    [16119681052636] => Array
        (
            [letter] => s
        )

    [16119681052635] => Array
        (
            [letter] => r
        )

    [16119681052634] => Array
        (
            [letter] => q
        )

)

Fetching only one column from the result

Call the values method on a query object passing it the name of the desired column. This will return an array of all values of that column. See example:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(range('a','z') as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$q = $table->query();

// first ten
$q->limit(10);

// fetch values of 'letter' column
$values = $q->values('letter');

print_r($values);

Outputs:

Array
(
    [16119677237230] => a
    [16119677237231] => b
    [16119677237233] => c
    [16119677237234] => d
    [16119677237237] => a
    [16119677237238] => b
    [16119677237239] => c
    [16119677237241] => d
    [16119677237242] => e
    [16119677237243] => f
)

Fetching only the ids from a result

Call the ids method on a query object:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('alphabet');

foreach(range('a','z') as $letter){
    $table->insert([
        'letter' => $letter
    ]);
}

$q = $table->query();

// only rows that satisfy certain conditions
$q->filter(function($row){
    return in_array($row['letter'], ['f','a','b','i','o']);
});

// fetch only the ids
$ids = $q->ids();

print_r($ids);

Outputs:

Array
(
    [0] => 16119677237230
    [1] => 16119677237231
    [2] => 16119677237237
    [3] => 16119677237238
    [4] => 16119677237243
    [5] => 16119677237248
    [6] => 16119677237255
    [7] => 16119677237273
    [8] => 16119677237275
    [9] => 16119677237280
    [10] => 16119677237284
    [11] => 16119677237292
    [12] => 16119677237309
    [13] => 16119677237310
    [14] => 16119677237316
    [15] => 16119677237320
    [16] => 16119677237328
    [17] => 16119677237366
    [18] => 16119677237368
    [19] => 16119677237373
    [20] => 16119677237377
    [21] => 16119677237385
    [22] => 16119677237405
    [23] => 16119677237406
    [24] => 16119677237411
    [25] => 16119677237415
    [26] => 16119677237423
    [27] => 16119677237444
    [28] => 16119677237446
    [29] => 16119677237451
    [30] => 16119677237455
    [31] => 16119677237463
    [32] => 16119680053466
    [33] => 16119680053467
    [34] => 16119680053474
    [35] => 16119680053476
    [36] => 16119680053481
    [37] => 16119680053485
    [38] => 16119680053493
    [39] => 16119680053510
    [40] => 16119680053511
    [41] => 16119680053516
    [42] => 16119680053520
    [43] => 16119680053528
    [44] => 16119680053545
    [45] => 16119680053547
    [46] => 16119680053552
    [47] => 16119680053556
    [48] => 16119680053564
    [49] => 16119680053634
    [50] => 16119680053635
    [51] => 16119680053641
    [52] => 16119680053645
    [53] => 16119680053653
    [54] => 16119680053676
    [55] => 16119680053677
    [56] => 16119680053683
    [57] => 16119680053687
    [58] => 16119680053695
    [59] => 16119680053714
    [60] => 16119680053716
    [61] => 16119680053721
    [62] => 16119680053725
    [63] => 16119680053734
    [64] => 16119680424592
    [65] => 16119680424594
    [66] => 16119680424604
    [67] => 16119680424605
    [68] => 16119680424610
    [69] => 16119680424615
    [70] => 16119680424622
    [71] => 16119680424639
    [72] => 16119680424641
    [73] => 16119680424646
    [74] => 16119680424650
    [75] => 16119680424658
    [76] => 16119680424675
    [77] => 16119680424677
    [78] => 16119680424682
    [79] => 16119680424686
    [80] => 16119680424694
    [81] => 16119680424785
    [82] => 16119680424787
    [83] => 16119680424792
    [84] => 16119680424796
    [85] => 16119680424804
    [86] => 16119680424827
    [87] => 16119680424828
    [88] => 16119680424834
    [89] => 16119680424838
    [90] => 16119680424846
    [91] => 16119680424865
    [92] => 16119680424866
    [93] => 16119680424871
    [94] => 16119680424875
    [95] => 16119680424883
    [96] => 16119681052377
    [97] => 16119681052379
    [98] => 16119681052393
    [99] => 16119681052395
    [100] => 16119681052401
    [101] => 16119681052405
    [102] => 16119681052413
    [103] => 16119681052432
    [104] => 16119681052433
    [105] => 16119681052439
    [106] => 16119681052443
    [107] => 16119681052451
    [108] => 16119681052470
    [109] => 16119681052472
    [110] => 16119681052478
    [111] => 16119681052482
    [112] => 16119681052490
    [113] => 16119681052612
    [114] => 16119681052614
    [115] => 16119681052619
    [116] => 16119681052623
    [117] => 16119681052631
    [118] => 16119681052656
    [119] => 16119681052657
    [120] => 16119681052662
    [121] => 16119681052666
    [122] => 16119681052674
    [123] => 16119681052693
    [124] => 16119681052694
    [125] => 16119681052700
    [126] => 16119681052704
    [127] => 16119681052712
)

Selecting the generated ID as a column

Use the $query->selid($as_key) to include the row id in the result:

<?php
require 'vendor/autoload.php';
use FlSouto\Fstore;
use FlSouto\FstoreTable;

$db = new Fstore('/home/fabio/Documentos/fstore/tests'.'/test_db');
$table = $db->table('users');
$table->insert([
    'name'=>'Alucard',
    'email'=>'alucard@antichapel.com',
]);

$rows = $table->query()->selid('_id')->rows();

print_r($rows);

Outputs:

Array
(
    [16119677237510] => Array
        (
            [name] => Alucard
            [email] => alucard@antichapel.com
            [_id] => 16119677237510
        )

    [16119680053804] => Array
        (
            [name] => Alucard
            [email] => alucard@antichapel.com
            [_id] => 16119680053804
        )

    [16119680424975] => Array
        (
            [name] => Alucard
            [email] => alucard@antichapel.com
            [_id] => 16119680424975
        )

    [16119681052831] => Array
        (
            [name] => Alucard
            [email] => alucard@antichapel.com
            [_id] => 16119681052831
        )

)

Filtering by creation date

Use the $query->since($date) and/or $query->until($date) to filter by creation date. This is faster than filtering by a custom "date" column because it doesn't require the data to be loaded from disk (the comparison is based on the generated ids themselves).

<?php

// Selects rows from 5 days ago up until now
$result = $table->query()->since('-5 days')->rows();

// Selects rows from the start up until 5 days ago
$result = $table->query()->until('-5 days')->rows();

It's also possible to combine both:

<?php

// Selects rows from day -5 up until day -2
$result = $table->query()->since('-5 days')->until('-2 days')->rows();

The $query->since() and $query->until() methods accept any argument the strtotime() php function would accept as well as a DateTime object or a date in the d/m/Y format.