Прикрепить категорию к продукту в Laravel (многие ко многим) - PullRequest
0 голосов
/ 15 октября 2018

Я новичок в Laravel.

Я пытаюсь прикрепить продукт к категории.

Я хочу, чтобы это происходило на моей странице создания, когда я создаю новый продукт, поэтомуавтоматически добавит категорию во вновь созданный продукт.

Это моя модель категории:

<?php
  namespace App;

  use Illuminate\Database\Eloquent\Model;

  class Category extends Model
  {
    protected $guarded = ['id'];
    public function products()
    {
      return $this->belongsToMany('\App\Product',
      'category_product',
      'category_id',
      'product_id');
    }
  }

Это моя модель продукта

<?php

 namespace App;

 use Illuminate\Database\Eloquent\Model;

 class Product extends Model
 {
   protected $guarded = ['id'];

   public function categories()
   {
    return $this->belongsToMany('\App\Category',
    'category_product',
    'category_id',
    'product_id');
   }
 }

Это мой продуктКонтроллер

<?php

namespace App\Http\Controllers;

use \App\Product;
use Illuminate\Http\Request;

class ProductController extends Controller
{
/**
 * Display a listing of the resource.
 *
 * @return \Illuminate\Http\Response
 */
public function index(Request $request)
{
  $products = Product::all();
  return view('products.index', compact('products'));
}

/**
 * Show the form for creating a new resource.
 *
 * @return \Illuminate\Http\Response
 */
public function create()
{
    return view ('products.create');
}

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{
  $product= new \App\Product;
  $product->name=$request->get('name');
  $product->description=$request->get('description');
  $product->price=$request->get('price');
  $product->amount=$request->get('amount');
  $product->Categories()->attach($category, ['category_id' => 
  $category_id]);
  $product->save();

  return redirect('products');
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}

}

Это мой вид создания продукта

<h1>Create a product</h1>
<form method="POST" action="{{ url('products') }}">
   @csrf
    <div class="form-group row">
      <label for="name" class="col-sm-4 col-form-label text-md- 
        right">{{('name') }}</label>

    <div class="col-md-6">
        <input id="name" type="text" name="name">
    </div>
</div>

<div class="form-group row">
    <label for="description" class="col-sm-4 col-form-label text-md-right">{{ ('description') }}</label>

    <div class="col-md-6">
        <input id="description" type="text" name="description">
    </div>
</div>

<div class="form-group row">
    <label for="price" class="col-sm-4 col-form-label text-md- 
     right">{{ ('price') }}</label>

    <div class="col-md-6">
        <input id="description" type="number" step=0.01 
         name="price">
    </div>
</div>

<div class="form-group row">
    <label for="amount" class="col-sm-4 col-form-label text-md- 
      right">{{ ('amount') }}</label>

    <div class="col-md-6">
        <input id="amount" type="number" name="amount">
    </div>
</div>

<div class="form-group row mb-0">
    <div class="col-md-8 offset-md-4">
        <button type="submit" class="btn btn-primary">
            {{ ('Submit') }}
        </button>
     </div>
  </div>
</form>
...