SQLSTATE [42S22]: столбец не найден, laravel ошибка отношения? - PullRequest
0 голосов
/ 17 февраля 2020

в моем приложении у меня есть модели Product и ProductCategory, ProductCategory имеет много продуктов, а Product принадлежит одной ProductCategory, в моем исходном файле я успешно создал категории и их продукты.

Теперь проблема в моем контроллер Я пытаюсь использовать метод быстрой загрузки, чтобы загрузить все категории продуктов вместе с соответствующими продуктами, например:

$productCategories = ProductCategory::with('products')->get();

Однако я получаю следующее сообщение об ошибке:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'products.product_category_id' in 'where clause' (SQL: select * from `products` where `products`.`product_category_id` in (1, 2, 3, 4))

Это мои модели:

Продукт:

<?php
namespace App\Models;


use Illuminate\Database\Eloquent\Model;


class Product extends Model
{


    protected $table = 'products';


    public function productcategory()
    {
        return $this->belongsTo('App\Models\ProductCategory', 'productcategory_id');
    }
}

Категория продукта:

<?php
namespace App\Models;


use Illuminate\Database\Eloquent\Model;


class ProductCategory extends Model
{


    protected $table = 'productcategories';


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


}

А теперь мои миграции:

<?php


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;


class CreateProductsTable extends Migration
{


    public function up()
    {


        Schema::create('products', function (Blueprint $table) {
            $table->increments('id');
            $table->unsignedInteger('productcategory_id')->index();
            $table->foreign('productcategory_id')->references('id')->on('productcategories')->onDelete('cascade')->onUpdate('cascade');
            $table->string('title');
            $table->timestamps();
        });


    }


    public function down()
    {
        DB::statement('SET FOREIGN_KEY_CHECKS = 0');
        Schema::dropIfExists('products');
        DB::statement('SET FOREIGN_KEY_CHECKS = 1');
    }


}
<?php


use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;


class CreateProductCategoriesTable extends Migration
{


    public function up()
    {


        Schema::create('productcategories', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title')->unique();
            $table->timestamps();
        });


    }


    public function down()
    {
        DB::statement('SET FOREIGN_KEY_CHECKS = 0');
        Schema::dropIfExists('productcategories');
        DB::statement('SET FOREIGN_KEY_CHECKS = 1');
    }


}

1 Ответ

0 голосов
/ 17 февраля 2020

*** Здесь Категория HasMany Продукты, где Внешний Ключ Is productcategory_id.

Класс расширяет категорию Модель { publi c функциональные продукты () { return $ this-> hasMany (Product :: class, 'productcategory_id'); } } ***** Каждый товар относится к категории .. ** Класс Продукт расширяет Модель { publi c категория функции () { return $ this-> assignTo (Category :: class); } }

Думай так.

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