Как решить в Laravel отношениях нулевое значение - PullRequest
0 голосов

enter image description here Я должен использовать последнюю версию laravel, и у меня небольшая проблема с Laravel отношением Один ко многим Я пытаюсь связать продукты с категориями

Это это мой код модели продукта

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

это мой код модели категории

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

Это мой код в контроллере

$products = Product::with('categories')->get();
    dd($products);

это мой код из файлов миграции

Schema::create('products', function (Blueprint $table) {
        $table->id();
        $table->unsignedBigInteger('category_id');
        $table->string('name')->unique();
        $table->string('slug')->unique();
        $table->string('keywords')->nullable();
        $table->string('price');
        $table->text('description')->nullable();
        $table->text('image')->nullable();
        $table->timestamps();
        $table->foreign('category_id')->references('id')->on('categories');
    });

Schema::create('categories', function (Blueprint $table) {
        $table->id();
        $table->string('name')->unique();
        $table->string('slug')->unique();
        $table->string('keywords')->nullable();
        $table->timestamps();
    });[![enter image description here][1]][1]

Если кто знает как решить эту проблему буду очень признателен

Ответы [ 2 ]

3 голосов
/ 06 мая 2020

Во-первых, отношение идет с нетерпеливой загрузкой. Пожалуйста, обновите свои коды в соответствии с одноразовым использованием

в модели продукта

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

в контроллере

$products = Product::with('category')->get();
dd($products[0]->category);
2 голосов
/ 06 мая 2020

Вы сообщаете, что имя отношения categories, поэтому laravel belongsTo будет выглядеть categories_id вместо category_id.

Вы можете переименовать свое имя отношения как category() или присвоить внешний ключ своим отношениям laravel следующим образом:

return $this->belongsTo('App\Category', 'category_id', 'id');
...