flsouto / fstore
Library for storing relational data in the file system
Requires
- ext-json: *
This package is not auto-updated.
Last update: 2025-01-31 15:43:52 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.