způsob dotazování do databáze

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

Ahoj neťťáci,
po tom, co jsem si prolezl pár příkladů jsem narazil na 2 různé způsoby dotazování u dibi a zajímal by mě váš názor, případně jaký způsob preferujete

<?php
dibi::query("SELECT * FROM [$table] WHERE [id_predmet]=%i", $id)
$this->connection->select('*')->from($this->table)->where('id=%i', $id)
?>

taky jsem se koukal na doctrine, ale s tím zatím žádné zkušenosti nemám…

Editoval trollnet (30. 11. 2010 23:56)

wdolek
Člen | 331
+
0
-

trollnet: ja osobne pouzivam fluent rozhrani – tedy ten druhy priklad. Pekne se tim daji skladat SQL dotazy, napriklad:

$stmt = $db->select('*')->from('foo');
if ($_SERVER['PHP_AUTH_USER'] == 'radvis') {
	$stmt->where('1 = 0');
}
$result = $stmt->execute();

Samozrejme to nelze pouzit vzdy a vsude – v pripade nejakych slozitych brykuli clovek sahne po obycejnem query().

Taky stoji za zminku DibiDataSource: https://phpfashion.com/…ak-jej-resit

Tharos
Člen | 1030
+
0
-

Doplním, že podmíněné dotazy se dají pohodlně zapsat i klasickým stylem, dokonce i za použití kratšího kódu. Dotaz od kolegy by vypadal:

$stmt = dibi::query('SELECT * FROM [foo] %if', $_SERVER['PHP_AUTH_USER'] === 'radvis', 'WHERE 1 = 0');

Klasický zápis je oproti fluentu údajně lépe optimalizovaný pro výkon, a tak kde je vyžadován výkon, lze doporučit spíše klasiku.

Editoval Tharos (1. 12. 2010 5:33)

wdolek
Člen | 331
+
0
-

Tharos napsal(a):

Doplním, že podmíněné dotazy se dají pohodlně zapsat i klasickým stylem, dokonce i za použití kratšího kódu. Dotaz od kolegy by vypadal:

Zajiste :) moje ukazka je jen ukazka. Jakmile clovek zacne v podmince joinovat, fluenti zapis je prehlednejsi (imho). Nicmene… nekdo ma rad holky, jiny zase vdolky :D