select, where, join oder orderBy stehen zur Verfügung.users.json).addAutoincrementField('id'). Bei jedem insert() wird automatisch eine eindeutige ID vergeben.getLastInsertId() erhältst du die letzte vergebene ID direkt nach einem Insert.addEncryptedField('password'). Die Daten werden dann per AES verschlüsselt gespeichert.isEncryptedField('password'), um das zu ermitteln.removeEncryptedField('feldname') – die system.json wird entsprechend angepasst.addAutoHashField('hash', 'sha256') konfigurieren, das dann automatisch aus anderen Daten berechnet wird.autoincrement erzeugt eine laufende ID, autohash generiert einen Hash basierend auf dem Datensatz.truncate('tabelle'). Dabei wird die Datei neu geschrieben und ggf. angelegt.getRawTableData() erhältst du den Original-JSON-Inhalt der Tabelle als String.users.system.json im gleichen Verzeichnis wie users.json.addEncryptedField oder addAutoincrementField zu tun.INNER, LEFT, RIGHT und FULL OUTER JOIN. Beispiel: ->join('kunden', 'id', 'LEFT').where([['field', 'like', '%suchwort%']]) kannst du flexible Bedingungen definieren.from('tabelle'). Für JOINs kannst du weitere Tabellen verbinden.select(['id', 'name']) um nur bestimmte Felder zurückzugeben.flock() werden Datei-Zugriffe exklusiv gelockt, um Konflikte bei gleichzeitigen Zugriffen zu verhindern.tabelle.system.json mit autoincrement, autohash oder encrypt.products.json) und binde JsonSQL ein. Demos helfen beim Einstieg.getRawTableData() oder var_dump() debuggen. Ein erweiterter Debug-Modus ist in Planung.