PHP code example of stonks / datalayer

1. Go to this page and download the library: Download stonks/datalayer library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

stonks / datalayer example snippets


define('DATA_LAYER_CONFIG', [
	'driver' => 'mysql',
	'host' => 'localhost',
	'port' => '3306',
	'dbname' => 'datalayer_example',
	'username' => 'root',
	'passwd' => '',
	'options' => [
		PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
		PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
		PDO::ATTR_CASE => PDO::CASE_NATURAL,
	],
]);

define('DATA_LAYER_CONFIG', [
	'db_1' => [ // Chave personalizada: faz referência ao datalayer_example_1
		'driver' => 'mysql',
		'host' => 'localhost',
		'port' => '3306',
		'dbname' => 'datalayer_example_1',
		'username' => 'root',
		'passwd' => '',
		'options' => [
			PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
			PDO::ATTR_CASE => PDO::CASE_NATURAL,
		],
	],
	0 => [ // Isto não é uma chave personalizada
		'driver' => 'mysql',
		'host' => 'localhost',
		'port' => '3306',
		'dbname' => 'datalayer_example_2', // Neste caso, a chave é o próprio nome do banco de dados
		'username' => 'root',
		'passwd' => '',
		'options' => [
			PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',
			PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
			PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
			PDO::ATTR_CASE => PDO::CASE_NATURAL,
		],
	],
	// ...
]);

class User extends DataLayer
{
    public function __construct()
    {
        parent::__construct(string $entity, ?array $


use Example\Models\User;
$model = new User();

// Encontre todos os usuários
$users = $model->find()->fetch(true);

// Encontre todos os usuários por grupo
$users = $model->find()->group('last_name')->fetch(true);

// Encontre todos os usuários e ordene por um campo
$users = $model->find()->order('email DESC')->fetch(true);

// Encontre todos os usuários com limite de 2
$users = $model->find()->limit(2)->fetch(true);

// Encontre todos os usuários com limite 2 e deslocamento 2
$users = $model->find()->limit(2)->offset(2)->fetch(true);

// Encontre um usuário por condição (apenas termos)
$user = $model->find('first_name = "Giovanni"')->fetch();

// Encontre um usuário por condição (termos e parâmetros)
$user = $model->find('last_name = :last_name', 'last_name=A. L. Oliveira')->fetch();

// Encontre um usuário por duas condições
$user = $model->find('first_name = :first_name AND last_name = :last_name', 'first_name=Giovanni&last_name=A. L. Oliveira')->fetch();


use Example\Models\User;

$model = new User();
$user = $model->findByPrimaryKey('[email protected]');
echo $user->first_name;


use Example\Models\User;

$model = new User();
$user = $model->findById(2);
echo $user->first_name;


use Example\Models\User;

$params = http_build_query(['first_name' => 'Giovanni']);

$model = new User();
$user = $model->find('first_name = :first_name', $params);
var_dump($user, $user->fetch());


use Example\Models\User;
$model = new User();
$count = $model->find()->count();
echo $count;


use Example\Models\User;
$user = new User();

$user->first_name = 'Giovanni';
$user->last_name = 'A. L. Oliveira';
$user->save(); // Ou $user->make()->save();


use Example\Models\User;

$user = (new User())->findById(2);
$user->last_name = 'Alves de Lima Oliveira';
$user->change()->save();


use Example\Models\User;

$user = new User();
$user->first_name = 'Giovanni';
$user->last_name = 'A. L. Oliveira';

// $user->functionSql(string $column, string $function);
$user->functionSql('name', 'CONCAT(:first_name, " ", :last_name)');

$user->save(); 


use Example\Models\User;

$user = (new User())->findById(2);
$user->destroy();


use Example\Models\User;

$user = (new User())->findById(2);

if($user->fail()){
    echo $user->fail()->getMessage();
}

class User{
    //...

    public function fullName(): string 
    {
        return "{$this->first_name} {$this->last_name}";
    }
    
    public function document(): string
    {
        return 'Restrito';
    }
}

echo $this->full_name; // Giovanni A. L. Oliveira
echo $this->document; // Restrito