другого класса, оба класса расширяют yii\db\ActiveRecord
Как можно получить доступ к свойствам объекта который находится внутри другого объекта?
напиши лучше что пытаешь сделать. что это за объекты? ты две модели пытаешь по ключу связать?
Да, есть 2 модели ActiveRecord: Валюта и торговая пара, связанные по ключу. В торговой паре 2 валюты. Делаю страничку на которой отображаются подробности торговой пары, на ней нужно вывести подробности о каждой валюте. Сейчас понял что реализую много однострочных методов в модели пары, пример ниже public function getBaseCurrencyName() { $coin = Coin::findOne($this->coin_id); return $coin->name; } Понял что эти методы можно не писать если добавлю 2 объекта ActiveRecord модели валюты в класс торговой пары, вот так: class Pair extends \yii\db\ActiveRecord { public $baseCoin; public $quoteCoin; public function __constructor() { $this->baseCoin = Coin::findOne($this->coin_id); $this->quoteCoin = Coin::findOne($this->pair_id); } ... } Как можно получить свойство из объектов $baseCoin/$quoteCoin?
Ты удивился когда узнаешь что есть связи между моделями
Этож связи...такое уже есть. Гугли hasOne/has many yii2
У тебя связь один к многим. Читай про связи (relation) ссылок выше накидали В твоем случае hasMany. class Pair extends ActiveRecord { public function getCoins() { return $this->hasMany(Coin::class, ['pair_id' => 'id']); } public function getBaseCoin() { //если валюта всегда является базовой //можешь ей свойство добавить и по нему фильтровать return $this->getCoins()->where(['base'=>true])->one(); //или через id как у тебя сейчас //$this->getCoins()->where(['id'=>$this->baseCoinId])->one(); } }
Обсуждают сегодня