Illuminate / Eloquent: как использовать ownTo в конструкторе - PullRequest
0 голосов
/ 12 ноября 2018

Я хотел бы предоставить данные из "таблицы внешних ключей" в текущей модели.

В настоящее время я достигаю этого с помощью функции (getBrand).

Но теперь я хотел бы, чтобы это было доступно как свойство.Поэтому я добавил свойство ($ brand) и хотел заполнить его, вызвав функцию (getBrand) в конструкторе модели.

class Car extends Eloquent {
  public $brand;

  public function __construct() {
    parent::__construct();
    $this->brand = getBrand();
  }

  public function getBrand() {
    return $this->belongsTo('App\Brand', 'FK_BrandId')->first()->Brandname;
  }
}

Но это создает ошибку во время выполнения конструктора:

Trying to get property of non-object

Есть идеи, как это решить?Спасибо!

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете немного изменить свою функцию getBrand на следующую, чтобы определить отношение между Car и Brand:

 public function brand() {
    return $this->belongsTo('App\Brand', 'FK_BrandId');
 }

Затем можно получить доступ к модели бренда из экземпляра Car, например, с помощью. $car->brand. Для доступа к торговой марке вы можете использовать $car->brand->Brandname.

Если вы хотите получить прямой доступ к названию бренда, вы можете определить «аксессор» для модели Car следующим образом:

public function getBrandNameAttribute()
{
    return $this->brand->BrandName;
}

После этого вы сможете получить доступ к названию бренда с помощью $car->brand_name.

...