yii2-ar-relations
, (*1)
Sorokin.Media repository, (*2)
, (*3)
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° \yii\db\ActiveRecord
, (*4)
ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ initClasses
ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ²ΡΠ·ΡΡ
(yii2 relations) Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, (*5)
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ΅ΠΉΡ, Π³Π΄Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π² Π²ΠΈΠ΄Π΅ Π°ΡΡΠΈΠ±ΡΡΠΎΡΠ² Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ, ΡΡΠ°Π²ΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΡΠ²ΡΠ·ΡΡ
ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ Π°ΡΡΠΈΠ±ΡΡΡ ΠΏΡΠΈΡΠ²ΠΎΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ - ΠΈΠΌΡ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, (*6)
ΠΡΠΈΡΠ²ΠΎΠ΅Π½ΠΈΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ Π΄Π΅Π»Π°ΡΡ Π² ΠΌΠ΅ΡΠΎΠ΄Π΅ initClasses
, (*7)
ΠΡΠΈΠΌΠ΅Ρ ΡΠ°ΠΉΠ»Π° ΡΡΠ΅ΠΉΡΠ°:, (*8)
```$php
trait RelationClassTrait
{
public $__userClass;, (*9)
public function initClasses()
{
$this->__userClass = User::class;
}
/**
* ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ²ΡΠ·Π΅ΠΉ
*/
public function init()
{
parent::init();
$this->initClasses();
}
/**
* ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ Π½ΡΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° Π² ΡΠ²ΡΠ·Ρ
* @param string $field
* @param string $class
* @return mixed
*/
public function setRelationClass(string $field, string $class)
{
return $this->{$field} = $class;
}
}
```, (*10)
ΠΠ΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎ Π²ΠΎ Π²ΡΠ΅Ρ
ActiveRecord ΠΌΠΎΠ΄Π΅Π»ΡΡ
ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΡΠ΅ΠΉΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° RelationInterface
, (*11)