попытка вернуть атрибут дает: PHP Попытка получить свойство не-объекта - PullRequest
0 голосов
/ 26 мая 2020

Это проект laravel. Учитывая результат:

<? print_r($definition->term); ?>

Он печатает следующее

            object(Term)#838 (5) {
  ["attributes"]=>
  array(2) {
    ["id"]=>
    int(1124)
    ["term"]=>
    string(4) "test"
  }
  ["original"]=>
  array(2) {
    ["id"]=>
    int(1124)
    ["term"]=>
    string(4) "test"
  }
  ["relationships"]=>
  array(0) {
  }
  ["exists"]=>
  bool(true)
  ["includes"]=>
  array(0) {
  }
}

У меня проблемы с доступом к атрибуту "термин" с помощью

$definition->term->term

Я получаю следующую ошибку: Попытка получить свойство не-объекта

Как мне получить доступ к термину attibute, чтобы получить слово test? что странно, так это то, что код, кажется, работает на php5 .6, у меня эта проблема только в php7

------ ОБНОВЛЕНИЕ ------

<? print_r($definition); ?>

выводит:

        Definition Object
(
    [includes] => Array
        (
            [0] => term
        )

    [attributes] => Array
        (
            [id] => 21674
            [term_id] => 7060
            [definition] => this is a test
            [example] => this is an example
            [submitter_name] => asdf
            [approved] => 0
            [created_at] => 2020-05-26 16:39:31
            [updated_at] => 2020-05-26 16:39:31
            [votos] => 0
        )

    [original] => Array
        (
            [id] => 21674
            [term_id] => 7060
            [definition] => this is a test
            [example] => this is an example
            [submitter_name] => asdf
            [approved] => 0
            [created_at] => 2020-05-26 16:39:31
            [updated_at] => 2020-05-26 16:39:31
            [votos] => 0
        )

    [relationships] => Array
        (
            [term] => Term Object
                (
                    [attributes] => Array
                        (
                            [id] => 7060
                            [term] => test
                        )

                    [original] => Array
                        (
                            [id] => 7060
                            [term] => test
                        )

                    [relationships] => Array
                        (
                        )

                    [exists] => 1
                    [includes] => Array
                        (
                        )

                )

        )

    [exists] => 1
)

Раньше это работало для печати термина тест , теперь этого не происходит:

{{ $definition->term->term) }}

Это работает

{{ $definition->submitter_name }}

Пробовал предложенный ответ $definition->term->attributes['term'];, но в нем говорится об ошибке: Попытка получить свойство не-объекта

1 Ответ

2 голосов
/ 26 мая 2020

Вам не хватает свойства attributes, а это массив:

echo $definition->term->attributes['term'];

Я не знаю Laravel, и вы не показываете foreach l oop, который вы упоминаете в комментарии, но к новому объекту в вашем редактировании можно будет получить доступ, например:

echo $definition->relationships['term']->attributes['term'];

Если только в коде Laravel нет некоторых магов c __get() или чего-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...