Insert hodnoty vypočtené funkcí

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
2bfree
Člen | 248
+
0
-

Ahoj,

poradili byste, jak se dá v \Nette\Database napsat insert, který vloží hodnotu výsledku SQL funkce?

Chtěl bych query

INSERT INTO `user_credentials` (`user_id`, `salt`, `password`)
VALUES (1, 'salt', SHA2(CONCAT('salt','heslo'), 512)

Došel jsem ke kódu jak bych to očekával, ale tak to není

$this->getDatabase()->table('user_credentials')->insert(array(
			'user_id' => 1,
			'salt' => 'salt',
			'password' => array('SHA2(CONCAT(?, ?), 512)', 'salt', 'heslo'),
		));

Editoval 2bfree (20. 2. 2014 0:04)

Pavel Macháň
Člen | 282
+
0
-

2bfree napsal(a):

Ahoj,

poradili byste, jak se dá v \Nette\Database napsat insert, který vloží hodnotu výsledku SQL funkce?

Chtěl bych query

INSERT INTO `user_credentials` (`user_id`, `salt`, `password`)
VALUES (1, 'salt', SHA2(CONCAT('salt','heslo'), 512)

Došel jsem ke kódu jak bych to očekával, ale tak to není

$this->getDatabase()->table('user_credentials')->insert(array(
			'user_id' => 1,
			'salt' => 'salt',
			'password' => array('SHA2(CONCAT(?, ?), 512)', 'salt', 'heslo'),
		));

Jakou chybu ti to vyhazuje?

David Matějka
Moderator | 6445
+
0
-

verze nette? v 2.1 asi takhle:

$context = $this->getDatabase();
$context->table('user_credentials')->insert(array(
            'user_id' => 1,
            'salt' => 'salt',
            'password' => $context::literal('SHA2(CONCAT(?, ?), 512)', 'salt', 'heslo'),
        ));