Php 如何从单个控制器向laravel中的多个表插入数据?
[我是拉雷维尔的新手] 我使用的是Laravel 5.5 我有ProductController和modelProduct两个表products和pcategorities。我想从ProductController向PCCategories表中插入数据。如何正确地做到这一点?我使用了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
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查看此链接