Подскажите какой патерн применить. Задача такая. Есть сущьность Orders. Но заказы могут быть как на продажу так и на покупку. Эти свойства хронятся в разных таблицах, всего три таблицы Заказы, данные покупки, данные продажы. Получается, что когда мы хотим отобразить наш заказ мы создаем модель order а потом взависимости от типа подтягиваем данные. Таким образом мы можем создать универсальный способ, отоброжать данные во вьюхе. Где взависимости от типа мы используем тот или иной метод, обращаясь к той или иной таблице....
сейчас это выглядит так
class Order extends ActiveRecord {
const TYPE_SELL = 1;
const TYPE_BUY = 2;
private $_params = null;
private function setParams() {
$this->_params = array();
if ($this->type == self::TYPE_BUY) {
//$Source = Order_requests::find()->where( ['id' => $this->source_id] )->one();
} else {
$Source = Certificate::find()->where( ['id' => $this->source_id] )->one();
}
foreach ($Source as $key => $val) {
$this->_params[$key] = $val; //get data from certificate model by source_id
}
}
function getParam($key) {
if (is_null($this->_params)) {
$this->setParams();
}
return isset($this->_params[$key]) ? $this->_params[$key] : null;
}
/**
* @inheritdoc
*/
public static function tableName() {
return '{{%orders}}';
}
создаем модель, потом взависимости от полученых параметров, подгружаем ту или иные данные. Как лучше сделать, какой паттерн применим.