mirror of
https://codeberg.org/vlw/php-libinnodb-fk.git
synced 2025-09-13 16:13:41 +02:00
73 lines
No EOL
1.9 KiB
Markdown
73 lines
No EOL
1.9 KiB
Markdown
# php-libinnodb-fk
|
|
|
|
This library retrievies and optionally resolves foreign keys in a MySQL/MariaDB database using the InnoDB storage engine.
|
|
|
|
**This library will only work with databases created with InnoDB**
|
|
|
|
## Install with composer
|
|
```
|
|
composer require victorwesterlund/libinnodb-fk
|
|
```
|
|
```php
|
|
use victorwesterlund\ForeignKeys\ForeignKeys
|
|
```
|
|
|
|
# Example / Documentation
|
|
|
|
Start by initializing `ForeignKeys` with `mysqli` connection details. `ForeignKeys` will pass the arguments along to `mysqli::__construct()`.
|
|
|
|
Remember to pass the database name where InnoDB foreign keys are stored to the 4th argument. The user must also have `SELECT` permissions on this database as the (4th) `$database` argument. It's usually `information_schema`. You can also pass the `ForeignKeys::DATABASE_NAME` constant if you're unsure.
|
|
|
|
**Example database relationship:**
|
|
|
|
[]
|
|
|
|
## Initialize `ForeignKeys`
|
|
|
|
```php
|
|
use victorwesterlund\ForeignKeys\ForeignKeys
|
|
|
|
$fk = new ForeignKeys($host, $user, $pass, ForeignKeys::DATABASE_NAME);
|
|
```
|
|
|
|
## Get column constraints for a table
|
|
|
|
Pass a database and table to `for()` and then chain `get_constraints()` to receive an associative array of all column relationships for that table.
|
|
|
|
```php
|
|
$fk->for("test", "bar")->get_constraints();
|
|
```
|
|
```php
|
|
[
|
|
// Name of the column that has a foreign key reference
|
|
"fk" => [
|
|
// key is the database and table it references. Value is the column
|
|
"test.foo" => "id"
|
|
]
|
|
]
|
|
```
|
|
|
|
## Resolve foreign key references for entities
|
|
|
|
You can also resolve foreign key references for a passed array of arrays.
|
|
|
|
Retrieve rows from your database and pass them to `resolve_all()` as an array of associatve arrays to resolve them automatically.
|
|
|
|
```php
|
|
$rows = [
|
|
"id" => 1,
|
|
"fk" => 2
|
|
];
|
|
|
|
$rows = $fk->for("test", "bar")->resolve_all($rows);
|
|
```
|
|
```php
|
|
// $rows will become
|
|
[
|
|
"id" => 1,
|
|
"fk" => [
|
|
"id" => 2,
|
|
"value" => "hello world"
|
|
]
|
|
]
|
|
``` |