Создание модели фотографий для моей таблицы свойств - PullRequest
2 голосов
/ 31 октября 2019

1) У меня есть модель Property

public function images()
{
     return $this->hasMany(PropertyImages::class);
}

2) Моя таблица для модели PropertyImages выглядит следующим образом:

Schema::create('property_images', function (Blueprint $table) {
       $table->bigIncrements('id');
       $table->string('title')->nullable();
       $table->string('src');
       $table->string('mime_type')->nullable();
       $table->string('alt')->nullable();
       $table->text('description')->nullable();
       $table->integer('property_id');
       $table->timestamps();
});

3) Когда у меня есть код:

$properties = Property::all();
dd($properties->images());

Кажется, ничего не работает. Я хочу, чтобы у каждого свойства было множество изображений, и мне интересно, почему оно не распознает данные. Я получаю следующую ошибку: Метод BadMethodCallException Illuminate \ Database \ Eloquent \ Collection :: images не существует.

Ответы [ 2 ]

2 голосов
/ 31 октября 2019

Вы пытаетесь вызвать функцию объекта в Collection. Чтобы получить изображения, вам нужно перебрать Collection. Попробуйте это:

$properties = Property::all();
foreach ($properties as $property) {
    dd($property->images);
}

Или даже попытайтесь получить только один объект за раз:

$property = Property::first();
dd($property->images);

Еще одна деталь, которую вы должны заметить, это то, что вы обычно не вызываете отношение как функциюВы называете это как атрибут. Поэтому не звоните $obj->images(), а $obj->images.

1 голос
/ 01 ноября 2019

Вы можете "извлечь" изображения из коллекции, чтобы получить коллекцию связанных изображений.

$images = Property::all()->pluck('images');

См. https://laravel.com/docs/5.8/collections#method-pluck

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