Nextras ORM relation table

sucho
Člen | 57
+
0
-

Zdravím @hrach @JanTvrdík

Snažím sa prepojiť Entity s relačnou tabuľkou
ale všetky videá a príklady sú zastaralé s inými zápismi
a v dokumentácii taktiež sú len príklady medzi dvoma tabuľkami

/**
 * @property int                        $id {primary}
 * @property string                     $email
 * @property string|null                $password
 * ...
 * @property OneHasMany|UserRole[]      $roles {1:m UserRole::$role}
 */
class User extends BaseEntity
{

}
/**
 * @property int                $id {primary}
 * @property string             $name
 * @property ManyHasOne|User[]  $users {m:1 UserRole::$user}
 */
class Role extends BaseEntity
{

}
/**
 * @property int               $id {primary-proxy}
 * @property OneHasMany|User   $user {1:m User::$roles} {primary}
 * @property OneHasMany|Role   $role {1:m Role::$users} {primary}
 */
class UserRole extends BaseEntity
{

}
MajklNajt
Člen | 498
+
+1
-

podľa mňa úplne nepochopené fungovanie relácií… buď si sprav M:N reláciu iba medzi dvoma entitami:

/**
 * @property ManyHasMany|Role[]		$roles {m:m Role::$users, isMain=true}
 */
class User
{
}

/**
 * @property ManyHasMany|User[]		$users {m:m User::$roles}
 */
class Role
{
}

alebo ak potrebuješ na tej spojovacej entite definovať ďalšie vlastnosti, tak potom správne zadefinuj relácie spojovacej entity:

/**
 * @property OneHasMany|UserRole[]	$userRoles {1:m UserRole::$user}
 */
class User
{
}

/**
 * @property OneHasMany|UserRole[]	$userRoles {1:m UserRole::$role}
 */
class Role
{
}

/**
 * @property ManyHasOne|User		$user {m:1 User::$userRoles} {primary}
 * @property ManyHasOne|Role		$role {m:1 Role::$userRoles} {primary}
 */
class UserRole
{
}

btw. v dokumentácií sú príklady aj na ManyHasMany https://nextras.org/…elationships#… aj OneHasMany/ManyHasOne https://nextras.org/…elationships#…, takže nabudúce pred kritizovaním dokumentácie by bolo fajn si to správne naskladať :)

hrach
Člen | 1838
+
0
-

Ahoj, bohuzel moc nerozumim.

Snažím sa prepojiť Entity s relačnou tabuľkou

Entity propojujes s entitami, ne s tabulkami. Tabulky propojujes v sql s tabulkami. Ve tve vete michas terminy ze dvou vrstve.

ale všetky videá a príklady sú zastaralé s inými zápismi

To je mozne, prosim uved prikady a idealne v to, v cem je to zastarale a kde. Pokud na foru, bohuzel to cizi prispvky nemuzu editovat. Sve pokusim upravit.
Edit: ano, to video je pravda urcite zastarale :(

a v dokumentácii taktiež sú len príklady medzi dvoma tabuľkami

Tezko delat relaci mezi vice tabulkami/entitami.

MajkNajt ti snad vec ozrejmil vice, pokud ne, prosim napis presne jakou chybu ti to pise.
Taky prosim, idealne issue zaloz na GitHubu – tam te sablona taky navede, ktere informace potrebujeme, abychom ti mohli pomoc ;) Diky.

Editoval hrach (5. 12. 2018 12:34)