tiny ‘n’ smart
database layer

Odkazy: dibi | API reference

Oznámení

Omlouváme se, provoz fóra byl ukončen

DibiFluent – tekuté SQL příkazy

před 11 lety

David Grudl
Nette Core | 6790
+
0
-

Experimentální novinkou revize 125 je třída DibiFluent, spravující tzv. tekuté příkazy. Zároveň jsem do třídy dibi přidal několik továrniček na tyto objekty.

SELECT

dibi::select('product_id')->as('id')
    ->select('title')
    ->from('products')
    ->innerJoin('orders')->using('(product_id)')
    ->innerJoin('customers USING (customer_id)')
    ->orderBy('title');
SELECT [product_id] AS [id] , [title]
FROM [products]
INNER JOIN [orders] USING (product_id)
INNER JOIN customers USING (customer_id)
ORDER BY [title]

INSERT

$record = array(
    'title'  => 'Produkt',
    'price'  => 318,
    'active' => TRUE,
);

dibi::insert('products', $record)
    ->setFlag('IGNORE');
INSERT IGNORE INTO [products] ([title], [price], [active])
VALUES ('Produkt', 318, 1)

UPDATE

$id = 10;

dibi::update('products', $record)
    ->where('product_id = %d', $id);
UPDATE [products]
SET [title]='Produkt', [price]=318, [active]=1
WHERE product_id = 10

DELETE

dibi::delete('products')
    ->where('product_id = %d', $id);
DELETE
FROM [products]
WHERE product_id = 10

custom commands

dibi::command()
    ->update('products')
    ->where('product_id = %d', $id)
    ->set($record);

// nebo
dibi::command()
    ->truncate('products');
UPDATE [products]
SET [title]='Produkt', [price]=318, [active]=1
WHERE product_id = 10

// nebo
TRUNCATE [products]

Viz také https://phpfashion.com/…-sql-prikazy