如何从单个Controller中将数据插入到laravel中的多个表中?

时间:2018-01-11 05:34:56

标签: php mysql laravel model

[我是Laravel的新人]

我正在使用Laravel 5.5

我有 ProductController 和型号产品我还有两个表产品 pcategories 。我想从 ProductController 将数据插入 pcategories 表中。怎么做得好?我在DB::table('pcategories')->使用insert($data);输入代码created_at,但未插入updated_at<?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'); } } 值。

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

这是我的控制器

foreach($page->links as $link){
         $comments = $link->comments;
}

2 个答案:

答案 0 :(得分:1)

使用Eloquent Model代替Query Builder。字段created_atupdated_atEloquent的“部分”。您可以使用Eloquent或插入manually这些字段。

如果您想使用Eloquent,请制作两个模型ProductPCategory。然后插入您的模型。

PCategory::create($data);

你需要在模型课上mass assigned你的领域。如果你不想大规模分配你的领域,那么这样做 -

$pcategory = new PCategory();
//$pcategory->column1 = $data['column1'] or $data->column1;
$pcategory->save();

要了解详情,请按照this官方文档

进行操作

对于你的第二部分,,你可以。

答案 1 :(得分:0)

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