Используйте идентификатор внешнего ключа, чтобы получить имя внешней таблицы - PullRequest
0 голосов
/ 01 марта 2020

У меня есть несколько таблиц, все имущество имеют category_id , я поставил внешний ключ для связи, но теперь не сработает, Как я могу перечислить свое имущество с имя эквивалентной категории

Категория модели

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Category extends Model
{
    protected $table = 'categories';
    protected $fillable = ['name'];

    public function estate()
    {
        return $this->belongsTo('App\Estate');
    }

}

Модель недвижимости

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Estate extends Model
{
    protected $table = 'estates';
    protected $fillable = ['categories_id'];

    public function category()
    {
        return $this->hasMany('App\Category');
    }

}

Создать таблицу объектов

        Schema::create('estates', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->timestamps();

            $table->string('name');
            $table->string('estate_photo')->nullable(true);
            $table->double('value');
            $table->integer('label_id');
        });

Создать таблицу категорий


        Schema::create('categories', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('name');
            $table->timestamps();
        });

Добавление категории внешнего ключа в состояние

        Schema::table('estates', function (Blueprint $table) {
            $table->unsignedBigInteger('categories_id');
            $table->unsignedBigInteger('sub_categories_id');
            $table->foreign('categories_id')->references('id')->on('categories');
            $table->foreign('sub_categories_id')->references('id')->on('sub_categories');
        });

Мой объект не имеет данных внешнего ключа для получения $object->categories_id->name

Ответы [ 2 ]

1 голос
/ 01 марта 2020

Я уверен, что это сработает .. поправьте меня, если я ошибаюсь

Estate::with('category')->get();

Это вернет все состояния, каждое с прикрепленными категориями.

1 голос
/ 01 марта 2020

В зависимости от модели вы должны использовать:

// get all estates for the example
$estates = Estate::get();

foreach ($estates as $estate) {
    // use the name of the relation to get your category - first
    dump($etate->category[0]->name);

    // or to get all categories
    foreach ($etate->category as $category) {
        dump($category->name);
    }
}
...