Как вставить название категории с 3-значным уникальным идентификатором в поле таблицы продукта в laravel - PullRequest
3 голосов
/ 05 октября 2019

В моей таблице product у меня есть поле product_id, которое не является primary key, куда я хочу вставить category name с 3-значным уникальным идентификатором в это поле, используя laravel ORM. Пожалуйста, помогите мне, как я могу это реализовать

Таблица категорий

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

Таблица продуктов

Schema::create('products', function (Blueprint $table) {
            $table->bigIncrements('id');
            $table->string('product_id');
            $table->unsignedBigInteger('category_id');
            $table->foreign('category_id')->references('id')->on('categories')->onDelete('cascade');
            $table->string('name', 100);
            $table->float('price', 5);
            $table->text('description');
            $table->timestamps();
        });

Способ хранения товара

public function store(Request $request)
    {
        $product = new Product();
        $product->product_id = **How can I implement that? (Example: Category-321)** 
        $product->name = $request->name;
        $product->category_id = $request->category;
        $product->price = $request->price;
        $product->description= $request->description;
        $product->save();

        return redirect()->route('product.index');
    }

Ответы [ 2 ]

1 голос
/ 05 октября 2019

Вы можете использовать mt_rand, как -

public function store(Request $request)
{
    $categoryname = $request->your-category-name;
    do{
       $productid = $categoryname.'-'.mt_rand(100, 999);;
    }while(DB::table('products')->where('product_id', $productid)->exists());

    $product = new Product();
    $product->product_id = $productid; 
    $product->name = $request->name;
    $product->category_id = $request->category;
    $product->price = $request->price;
    $product->description= $request->description;
    $product->save();

    return redirect()->route('product.index');
}
0 голосов
/ 05 октября 2019

In

Schema::create('products', function (Blueprint $table) {

Изменить:

$table->unsignedBigInteger('category_id'); 

на:

$table->string('category_id');

Так, чтобы поле category_id могло принимать строки. Затем измените метод хранения, как указано ниже:

public function store(Request $request)
    {

        $category = Category::find($request->category);

        $product = new Product();
        $product->product_id = $category->name . '-321'; // you can replace 321
        $product->name = $request->name;
        $product->category_id = $request->category;
        $product->price = $request->price;
        $product->description= $request->description;
        $product->save();

        return redirect()->route('product.index');
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...