Ndab. Je to mytus alebo skutocne existuje?

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

Uz sme o Ndab tolko poculi ale v akcii sme ho este nevideli… :)

mne sa Ndab sprasne paci aj by som ho rad pouzival (aj ked nieje na 100% vyladeny) len neviem ako…

composer.json sa pise ze to funguje na nette >= 2.0.5 no mne to akosi nechcelo slapat

skusal to niekto rozbehat? ma s tym niekdo nejake skusenosti?

hrach
Člen | 1838
+
0
-

Existuje, na nettu je opravdu aktualni verze, jen spatny composer. Nejak fixnu ;)

hrach
Člen | 1838
+
0
-

V masteru sem fixnul composer.json, takze by mel behat funkcne na aktualnim nette. vytvoril sem taky vetev stable („dev-stable“), ktera by mela byt funkcni se stabilnim nette, bohuzel nemam vubec cas to otestovat.

Filip111
Člen | 244
+
0
-

Zajímavý – v samotné nette DB mi tak nějak pořád chybí ty další vrstvy na které jsem si zvykl při použití několika vrstvého modelu s dibi.

Jak jsem v Ndab zahlídl něco jako manager a entitu, hned mě to zaujalo.
Chvíli si s tím pohraju, zatím jsem si všiml jedné chyby – v constructoru selection se předávají parametry v opačném pořadí než se předávají v Nette\Database\Table\Selection

Aby to fungovalo, je třeba je otočit u volání parent resp. ideáně všude kde se volá Ndab\Seelction ať je to sjedncený s NDB.

class Selection extends Table\Selection
{
	// preskoceno par radku

	public function __construct(Nette\Database\Connection $connection, $table, Manager $manager)
	{
		//parent::__construct($connection, $this->table = $table);	// puvodni
		parent::__construct($this->table = $table, $connection);	// funkcni v Nette 2.0.5
		$this->manager = $manager;
	}
Filip111
Člen | 244
+
0
-

Ještě jsem úplně nepochopil jednu věc – k čemu slouží v Manageru vlastnost settings?
Je to jen obyčejné pole, ale ve funkci initEntity se z něj tahá název třídy. Pokud je tedy settings prázdné, všechny entity získají třídu \Ndab\Entity, což nechci.

David Ďurika
Člen | 328
+
0
-

no este pred tym je tam riadok https://github.com/…/Manager.php#L71 a to je podstatne… len hrach to tam asi zabudol zakompnovat, je tam sice getter aj setter https://github.com/…election.php#L68 a v mangeri si vies nastavit https://github.com/…kManager.php#L18 len to nefunguje…

Filip111
Člen | 244
+
0
-

Jo, projel jsem si to v debugu a už je mi to jasnější – chybí tam předání $rowClass z Managera do Selection, pak to vrátí správnou třídu.

Ještě zpátky k původní otázce – k čemu je zamýšleno nebo už dokonce slouží vlastnost Manager->settings ?

nanuqcz
Člen | 822
+
0
-

Taky se na použití NDab už nějakou dobu těším, jen čekám až bude v NetteDB fungovat vícenásobný related. Do té doby to pro mě pořád nebude ono.

David Ďurika
Člen | 328
+
0
-

Filip111 napsal(a):
Ještě zpátky k původní otázce – k čemu je zamýšleno nebo už dokonce slouží vlastnost Manager->settings ?

zatial to nesluzi na nic ine, len na nastavenie tych tried pre entity… myslim si ze ten settings je tam skor pre buducnost…

hrach
Člen | 1838
+
0
-

Settings je jenom typehint na konfiguraci z DIC :)

Jirda
Člen | 103
+
0
-

Skoda, ze ten example k ndab je na githubu tak strohej. Zajimalo by me, jak treba resit, kdyz budu mit entitu Book a Tag, tak jak pridat tagy.

Predpokladam, ze Book bude mit asi nejakou metodu addTag, ale jeji implementace? Bude volat managera? Pokud to totiz chapu dobre, manager by mel byt ten, kdo vklada a maze entity.

Opravdu bych ocenil, paklize nekdo experimentuje s ndab, kdyby ukazal nejaky rozsahlejsi model.

Diky moc.

hrach
Člen | 1838
+
0
-

Vazby si resim zatim kompletne rucne. Toto je (bohuzel prozatim) jen obalka, ktera tvori entity a tu i rekurzivne.

hrach
Člen | 1838
+
0
-

V ramci db by mely byt klice vazany pres primarni. Takove GUID je take kandidat, ale nemyslim, ze by se jim melo cokoliv vazat. Asi zalezi na konkretnim pripadu, ale rekl bych, ze v 95 % to jde resit tak, jak rikam.

nanuqcz
Člen | 822
+
0
-

Ahoj, jak to teď prosím vypadá s NDab? Funguje s aktuální stable verzí Nette, nebo jen s dev?

Díky :-)

hrach
Člen | 1838
+
0
-

S aktualni verzi mysli nefunguje :) Bohuzel nestiham to updatovat, nicmene, myslel jsem ze to kvuli jedne chybe v nette zavrhnu, ale nevadvno jsem to v nette predelal, aby tam nebylo, takze staci ndab jen updatovat na aktualni verzi… :) casem bude…

nanuqcz
Člen | 822
+
0
-

Super :-) Rozhodoval jsem se teď mezi Fabik\Database a NDab, a NDab mi přijde jednodušší (méně upsaná). Takže jakmile bude, chystám se ji vyzkoušet jako první ;-)

enumag
Člen | 2118
+
0
-

@nanuqcz: Ona ta upsanost Fabik\Database má své důvody. (V budoucnu navíc část toho kódu asi bude generovaná.)

nanuqcz
Člen | 822
+
0
-

enumag napsal(a):

@nanuqcz: Ona ta upsanost Fabik\Database má své důvody

Nějak jsem tam ty důvody nenašel :-)

Osobně bych nejradši takové rozšíření Nette\Database, které by se chovalo naprosto stejně, jako Nette\Database. Jen pro pár mnou definovaných tabulek by místo ActiveRow vracel instanci mé vlastní třídy, kterou bych si nastavil. Věřím, že z „akademického“ pohledu to možná není ideální, ale z pohledu praktického by to bylo dokonalé (stručnost psaní spojená s rozšířenou funkčností).

Caine
Člen | 216
+
0
-

nanuqcz +1:)

hrach
Člen | 1838
+
0
-

Ndab updatovan pro 2.1 :)

Ivorius
Nette Blogger | 119
+
0
-

Dá se nějak dosáhnout toho, že by např. tohle

	public function getSortedTags()
{
return $this->getSubRelation('book_tag:tag', function($related) {
$related->order('tag.name ASC');
});
}

vrátilo TagEntity namísto BookEntity .

Ivorius
Nette Blogger | 119
+
0
-

Jak udělat vícenásobný related() při použití ndab?

Př.

$this->order = $this->orderService->get($this->orderId);
$this->products = $this->order->related("products");
foreach($this->products AS $product) {
	$foo = $product->related("variants")->fetch();
}