Php 如何从单个控制器向laravel中的多个表插入数据?

Php 如何从单个控制器向laravel中的多个表插入数据?,php,mysql,laravel,model,Php,Mysql,Laravel,Model,[我是拉雷维尔的新手] 我使用的是Laravel 5.5 我有ProductController和modelProduct两个表products和pcategorities。我想从ProductController向PCCategories表中插入数据。如何正确地做到这一点?我使用了DB::table('pcategories')->在这里输入代码insert($data)但它不会在处插入创建的值,也不会在处插入更新的值 另一个问题:我可以将多个模型调用到控制器中吗 这是我的控制器 <?p

[我是拉雷维尔的新手]

我使用的是Laravel 5.5

我有ProductController和modelProduct两个表productspcategorities。我想从ProductControllerPCCategories表中插入数据。如何正确地做到这一点?我使用了
DB::table('pcategories')->
在这里输入代码
insert($data)但它不会在
处插入
创建的值,也不会在
处插入
更新的值

另一个问题:我可以将多个模型调用到控制器中吗

这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Support\Facades\DB;
use Illuminate\Http\Request;
use App\Product;
use Image;

class ProductController extends Controller {

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index() {
        $product->categorieslist = Product::table('pcategories')->get();
        return view('product.add')->with($data);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create() {
        $product->categorieslist = Product::table('pcategories')->get();
        return view('product.add')->with($data);
    }

    public function all() {
        $product->products = Product::table('products')->get();
        return view('product.all', $data);
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request) {
        $this->validate($request, [
            'producttitle' => 'required',
            'price' => 'required',
            'photo' => 'image|mimes:jpeg,png,jpg,gif,svg',
        ]);

        $product = new Product;

        $image = $request->file('photo');
        if ($request->file('photo')) {
            $product->photo = time() . '.' . $image->getClientOriginalExtension();
            $imagePath = public_path('/images/product');
            $img = Image::make($image->getRealPath());
            $img->resize(250, 250, function ($constraint) {
                $constraint->aspectRatio();
            })->save($imagePath . '/' . $product->photo);
        }

        $product->title = $request->input('producttitle');
        $product->description = $request->input('description');
        $product->category = $request->input('category');
        $product->price = $request->input('price');
        $product->saleprice = $request->input('saleprice');
        $product->weight = $request->input('weight');
        $product->dimension = $request->input('dimension');
        $product->color = $request->input('color');
        $product->save();
        return redirect('/product/')->with('success', 'Successfully Added');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id) {
        $product = Product::find($id);
        return view('product.show')->with('product', $product);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id) {
        $data['product'] = Product::find($id);        
        $data['categorieslist'] = Product::table('pcategories')->get();
        return view('product.edit')->with($data);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id) {
        $this->validate($request, [
            'producttitle' => 'required',
            'price' => 'required',
            'photo' => 'image|mimes:jpeg,png,jpg,gif,svg',
        ]);

        $product = Product::find($id);

        $image = $request->file('photo');
        if ($request->file('photo')) {
            $product->photo = time() . '.' . $image->getClientOriginalExtension();
            $imagePath = public_path('/images/product');
            $img = Image::make($image->getRealPath());
            $img->resize(250, 250, function ($constraint) {
                $constraint->aspectRatio();
            })->save($imagePath . '/' . $product->photo);
        }

        $product->title = $request->input('producttitle');
        $product->description = $request->input('description');
        $product->category = $request->input('category');
        $product->price = $request->input('price');
        $product->saleprice = $request->input('saleprice');
        $product->weight = $request->input('weight');
        $product->dimension = $request->input('dimension');
        $product->color = $request->input('color');
        $product->save();
        return redirect('/product/all')->with('success', 'Successfully Updated');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id) {
        Product::find($id)->delete();
        return redirect('/product/all')->with('success', 'Successfully Deleted');
    }

    public function category() {
        $data['categories'] = DB::table('pcategories')->get();
        return view('product.category')->with($data);
    }

    public function storecategory(Request $request) {
        $this->validate($request, [
            'category' => 'required',
        ]);

        $data = array();
        $data['category'] = $request->input('category');
        DB::table('pcategories')->insert($data);
        return redirect('/product/category')->with('success', 'Successfully Added');
    }

    public function categorydestroy($id) {
        DB::table('pcategories')->where('id', $id)->delete();
        return redirect('product/category/')->with('success', 'Successfully Deleted');
    }

}

使用
雄辩的模型
而不是
查询生成器
。在
创建的
字段和在
更新的
字段是
雄辩的
的“一部分”。您可以使用
elount
或手动插入
这些字段

如果您想使用有说服力的
Product
PCategory
两种型号。然后插入您的模型

PCategory::create($data);
您需要
批量分配
模型类上的字段。如果您不想批量分配字段,请执行以下操作-

$pcategory = new PCategory();
//$pcategory->column1 = $data['column1'] or $data->column1;
$pcategory->save();
要了解更多信息,请遵循官方文件


对于第二部分,是的,您可以。

首先,与您的模型建立适当的关系(一对多等)
其次,可以使用DB::transact将数据插入DB中的多个表中。它有自己的优点,而不仅仅是在表中插入Fk来填充数据。有关更多信息,您可以在谷歌中搜索。

能否显示您的控制器代码??公共函数storecategory(Request$Request){$this->validate($Request,['category'=>'required',]);$data=array();$data['category']=$Request->input('category');DB::table('pcategories')->insert($data);返回重定向('/product/category')->带('success','Successfully Added');}您的问题不清楚。此外,您尝试了什么来实现您想要的结果?您关于您的问题的研究表明了什么?您能提供您尝试的代码吗?并且可能有助于改进您的问题。您好,这是我的控制器,它帮助您:)您是否有指向PCategory文档的更新链接?@CrazyProfessor查看此链接