Ответы пользователя по тегу Yii
  • Yii2 / Active Record / Как получить поля из Join таблицы?

    vikoff
    @vikoff
    Web-разработчик
    Я для этого использовал кастомный behaviour. Решение не самое красивое, но лучше ничего не придумалось. Этот behaviour позволяет модели иметь совершенно произвольные свойства.

    класс кастомного Behaviour
    namespace app\custom\behaviors;
    
    use yii\base\Behavior;
    
    class ExtraPropsBehaviour extends Behavior
    {
    	protected $_props = [];
    
    	public function canGetProperty($name, $checkVars = true)
    	{
    		return TRUE;
    	}
    
    	public function canSetProperty($name, $checkVars = true)
    	{
    		return TRUE;
    	}
    
    	public function __get($name)
    	{
    		return isset($this->_props[$name]) ? $this->_props[$name] : null;
    	}
    
    	public function __set($name, $value)
    	{
    		$this->_props[$name] = $value;
    	}
    
    	public function __isset($name)
    	{
    		return isset($this->_props);
    	}
    
    }


    а это добавить в модель
    /** @inheritdoc */
    	public function behaviors()
    	{
    		return [
    			ExtraPropsBehaviour::className()
    		];
    	}


    После применения можно обращаться к результатам сджойненной таблицы как к простым свойствам модели:
    $model->field_from_joined_table
    Ответ написан
    2 комментария