Задать вопрос

Trying to get property 'user_id' of non-object?

Имеется экшен, который должен удалять запись из БД.
Он принимает id записи, посланный методом post.
После вызова, возвращает ошибку, однако метод delete() срабатывает.
В чём ошибка?

/**
     * @return string
     *
     * Delete vacancy action
     */
    public function actionDelete()
    {

        /* @var $currentUser User */
        $currentUser = Yii::$app->user->identity;

        if(Yii::$app->user->isGuest || $currentUser->isUser()) {
            return $this->goHome();
        }

        $model = new Vacancy();

        Yii::$app->response->format = Response::FORMAT_JSON;

        // получаем id поста, на который пожаловались
        // по методу post
        $id = Yii::$app->request->post('id');

        // находим вакансию
        $vacancy = $model->getVacancyById($id);

        // на всякий случай, проверяем, является ли
        // пользователь автором вакансии
        if($currentUser->getId() != $vacancy->user_id ) {
            return $this->goHome();
        }

        if($vacancy->delete()) {
            return $this->redirect(Url::to(['/user/profile/view', 'id' => $currentUser->getId()]));
        }

        return [
            'success' => false,
            'text' => 'Error',
        ];
    }


Метод getVacancyById
/**
     * @param $id
     * @return array|null|\yii\db\ActiveRecord
     *
     * get vacancy by id
     */
    public function getVacancyById($id)
    {
        return $this->find()->where(['id' => $id])->one();
    }
  • Вопрос задан
  • 473 просмотра
Подписаться 1 Простой Комментировать
Решение пользователя Максим Тимофеев К ответам на вопрос (3)
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Trying to get property 'user_id' of non-object?

Вы пытаетесь обратиться к свойству объекта, но это не объект. Вероятно тут: $vacancy->user_id Скорее всего у Вас в $vacancy содержится null, и соответственно Вы пытаетесь сделать null->user_id Так что прежде чем обращаться к свойству стоит делать проверку, а объект ли в $vacancy или не равно ли оно null, а иногда и проверять инстанс какого именно класса в переменной.
Ответ написан
Комментировать