yii2 Trying to get property of non-object - При загрузке модели (передаче её в конструктор)

Убедитесь что объект не объект не создаётся два раза (используйте для этого Yii::trace())

Дело в том, что объект в конструктор которого вы передаёте метод может создаваться не только вами явно но и каким-то mapping-ом.

В нашем случае был такое решение:


function __construct(User $user) {
        parent::__construct();
        
      // $user2 = \Yii::$app->user->identity; // с этим работает всегда 
        \Yii::trace($user, "User Object");
    

        $this->organization_name = $user->organization->name;
    }

дело в том, что yii2 вызывал данный конструктор, но не передавал в него объект user, что приводило к ошибке.

Решение

Решили проблему так:

function __construct(User $user = null) {
        parent::__construct();
        
      // $user2 = \Yii::$app->user->identity; // с этим работает всегда 
        \Yii::trace($user, "User Object");
    
    if ($user) { // проверяем передан ли объект 
        $this->organization_name = $user->organization->name;
    }
    }

Key Words for FKN + antitotal forum (CS VSU):