Laravel Eloquent (атрибут Model не отображается) - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть Stat Класс:

class Stat extends Model
{
    public static function getByKey($key)
    {
        return Stat::where("key", "=", $key)->first();
    }

    public function getDates()
    {
        return json_decode($this->content);
    }
}

В моей базе данных таблица stats содержит только два столбца (ключ, содержимое) Когда я выполняю эту функцию, на мой взгляд, возникает ошибка

{!! \App\Stat::getByKey("ORDERS-DATA")->getDates() !!}

и это делает эту ошибку:

Exception message: Undefined property: App\Stat::$content

Итак, я добавил эти две строки в getDates() для отладки ошибки:

public function getDates()
{
    dd($this->content);//This shows the same error
    dd($this->attributes["content"]);//This works fine and show me what I want
    return json_decode($this->content);
}

затем я выполнил dd($this), и это показывает это:

Stat {#486
  #connection: "mysql"
  #table: "stats"
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #attributes: array:5 [
    "id" => 8
    "key" => "ORDERS-DATA"
    "content" => """
      [
      {
      \t"day": "2019-04-01",
      \t"count": "5"
      }
      ]
      """
    "created_at" => "2019-04-01 14:09:00"
    "updated_at" => "2019-04-01 14:11:02"
  ]
  #original: array:5 [
    "id" => 8
    "key" => "ORDERS-DATA"
    "content" => """
      [
      {
      \t"day": "2019-04-01",
      \t"count": "5"
      }
      ]
      """
    "created_at" => "2019-04-01 14:09:00"
    "updated_at" => "2019-04-01 14:11:02"
  ]
  #changes: []
  #casts: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
  #fillable: []
  #guarded: array:1 [
    0 => "*"
  ]
}

И что я хочу - это получить content по $this->content, и я не понимаю, почему это не работает ?? Пожалуйста, помогите

1 Ответ

0 голосов
/ 01 апреля 2019

Произошла ошибка, потому что я переопределил одну из функций Laravel.имя getDates ИЛИ getByKey ИЛИ getCounts используется Laravel.

Это так странно, эта ошибка произошла со мной два раза в один и тот же день. Сегодня утром я создал функцию под названиемgetAttributes() и показал мне совершенно другую ошибку.Почему сообщество не создает список имен функций, которые нам запрещено использовать, или использует более уникальные имена ???

...