/** * update user roles [delete & insert] * * @param int User id * @param int Role id */ public function updateUserRoles($userId, $roles) { try { dibi::begin(); dibi::delete(self::ACL_USERS_2_ROLES_TABLE)->where('user_id = %i', $userId)->execute(); foreach ($roles as $role) { dibi::insert(self::ACL_USERS_2_ROLES_TABLE, array('user_id' => $userId, 'role_id' => $role))->execute(); } dibi::commit(); } catch (DibiDriverException $e) { dibi::rollback(); throw $e; } }
<h1>Using Fluent Syntax | dibi</h1> <?php require_once 'Nette/Debug.php'; require_once '../dibi/dibi.php'; date_default_timezone_set('Europe/Prague'); dibi::connect(array('driver' => 'sqlite', 'database' => 'data/sample.sdb')); $id = 10; $record = array('title' => 'Super product', 'price' => 318, 'active' => TRUE); // SELECT ... dibi::select('product_id')->as('id')->select('title')->from('products')->innerJoin('orders')->using('(product_id)')->innerJoin('customers USING (customer_id)')->orderBy('title')->test(); // -> SELECT [product_id] AS [id] , [title] FROM [products] INNER JOIN [orders] // USING (product_id) INNER JOIN customers USING (customer_id) ORDER BY [title] // SELECT ... echo dibi::select('title')->as('id')->from('products')->fetchSingle(); // -> Chair (as result of query: SELECT [title] AS [id] FROM [products]) // INSERT ... dibi::insert('products', $record)->setFlag('IGNORE')->test(); // -> INSERT IGNORE INTO [products] ([title], [price], [active]) VALUES ('Super product', 318, 1) // UPDATE ... dibi::update('products', $record)->where('product_id = %d', $id)->test(); // -> UPDATE [products] SET [title]='Super product', [price]=318, [active]=1 WHERE product_id = 10 // DELETE ... dibi::delete('products')->where('product_id = %d', $id)->test(); // -> DELETE FROM [products] WHERE product_id = 10 // custom commands dibi::command()->update('products')->where('product_id = %d', $id)->set($record)->test(); // -> UPDATE [products] SET [title]='Super product', [price]=318, [active]=1 WHERE product_id = 10 dibi::command()->truncate('products')->test(); // -> TRUNCATE [products]
/** * basic delete specified by $id * * @param int $id * @param bool [optional] erase dir on filesystem? * @return DibiResult */ public function delete($id) { if (func_num_args() > 1) { $rmDir = func_get_arg(1); if (!empty($rmDir)) { Basic::rmdir(static::PATH . $id, true); } } return dibi::delete(static::TABLE)->where('id=%i', $id)->execute(); }
public function deleteExpiredLoginTokens() { dibi::delete(self::TEMPORARY_LOGIN_TABLE)->where('expire < NOW()')->execute(); }