在 Laravel 中的多个表中存储多行
Store multiple rows in multiple tables in Laravel
我想在数据库中的多个 table 中存储多行。我的控制器目前没有存储多个值,它只在我的 bill_products
和 item_lists
table 中保存一行。
purchases
table:
| product quantity price manufacturer |
| a 1 12$ xyz |
| b 2 1$ x |
| c 10 10$ y |
bill_products
table:
| product quantity price |
| a 1 12$ |
| b 2 1$ |
| c 10 10$ |
item_lists
table:
| product quantity |
| a 1 |
| b 2 |
| c 10 |
这是我的purchase\purchase-entry.blade.php
<div class="container">
<div class="row justify-content-center">
<div class="col-md-12">
<div class="card">
<div class="card-header">PURCHASE FORM</div>
<div class="card-body">
@if (Session::has('success'))
<div class="alert alert-success">{!! Session::get('success') !!}</div>
@endif
@if (Session::has('failure'))
<div class="alert alert-danger">{!! Session::get('failure') !!}</div>
@endif
<form method="POST" action="{{route('purchaseentryformsave')}}" enctype="multipart/form-data">
@csrf
<div class="form-row">
<div class="col-md-4 mb-3">
<label >product NAME</label>
<input type="text" name="product[]" placeholder="product" value="" required >
</div>
<div class="col-md-4 mb-3">
<label >quantity</label>
<input type="text" name="quantity[]" placeholder="quantity" value="" required >
</div>
<div class="col-md-4 mb-3">
<label >price</label>
<input type="text" name="price[]" placeholder=price" value="" required >
</div>
<div class="col-md-4 mb-3">
<label >manufacturer</label>
<input type="text" name="manufacturer[]" placeholder="manufacturer" value="" required >
</div>
</div>
</div>
<button class="btn btn-primary float-right" type="submit">SAVE</button>
</form>
相关路线:
Route::post('purchasesave', 'PurchaseController@purchasesave')->name('purchasesave');
我的控制器 PurchaseController.php
使用这 3 个模型:Purchase
、BillProduct
和 ItemList
.
public function purchaseentryformsave(Request $request)
{
$input = $request->all();
$purchases = [];
$bill_products = [];
$item_lists = [];
foreach( $request->product as $k => $p ) {
$data = collect([
'product' => $request['product'][$k],
'quantity' => $request['quantity'][$k],
'price' => $request['price'][$k],
'manufacturer' => $request['manufacturer'][$k],
]);
$purchases[] = $data->toArray();
$bill_products[] = $data->except(['manufacturer'])->toArray();
$item_lists[] = $data->except(['price', 'manufacturer'])->toArray();
}
Purchases::insert( $purchases );
BillProduct::insert( $bill_products );
ItemList::insert( $item_lists );
return redirect('allpurchasesupplierlist')->with('success','PURCHASE ENTRY ADDED SUCCESSFULLY .');
}
型号
项目列表
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Item_list extends Model
{
protected $table = 'item_lists';
protected $fillable = ['product','quantity'];
}
购买
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Purchase extends Model
{
protected $table = 'purchases';
protected $fillable = ['product','quantity','price'.'manufacturer'];
}
BillProduct
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Billproduct extends Model
{
protected $table = 'bill_products';
protected $fillable = ['product','quantity','price'];
}
最好使用 insert
而不是 create
$purchases = [];
$bill_products = [];
$item_lists = [];
foreach( $request->product as $k => $p ) {
$data = collect([
'product' => $request['product'][$k],
'quantity' => $request['quantity'][$k],
'price' => $request['price'][$k],
'manufacturer' => $request['manufacturer'][$k],
]);
$purchases[] = $data->toArray();
$bill_products[] = $data->except(['manufacturer'])->toArray();
$item_lists[] = $data->except(['price', 'manufacturer'])->toArray();
}
Purchases::insert( $purchases );
BillProduct::insert( $bill_products );
ItemList::insert( $item_lists );
我想在数据库中的多个 table 中存储多行。我的控制器目前没有存储多个值,它只在我的 bill_products
和 item_lists
table 中保存一行。
purchases
table:
| product quantity price manufacturer |
| a 1 12$ xyz |
| b 2 1$ x |
| c 10 10$ y |
bill_products
table:
| product quantity price |
| a 1 12$ |
| b 2 1$ |
| c 10 10$ |
item_lists
table:
| product quantity |
| a 1 |
| b 2 |
| c 10 |
这是我的purchase\purchase-entry.blade.php
<div class="container">
<div class="row justify-content-center">
<div class="col-md-12">
<div class="card">
<div class="card-header">PURCHASE FORM</div>
<div class="card-body">
@if (Session::has('success'))
<div class="alert alert-success">{!! Session::get('success') !!}</div>
@endif
@if (Session::has('failure'))
<div class="alert alert-danger">{!! Session::get('failure') !!}</div>
@endif
<form method="POST" action="{{route('purchaseentryformsave')}}" enctype="multipart/form-data">
@csrf
<div class="form-row">
<div class="col-md-4 mb-3">
<label >product NAME</label>
<input type="text" name="product[]" placeholder="product" value="" required >
</div>
<div class="col-md-4 mb-3">
<label >quantity</label>
<input type="text" name="quantity[]" placeholder="quantity" value="" required >
</div>
<div class="col-md-4 mb-3">
<label >price</label>
<input type="text" name="price[]" placeholder=price" value="" required >
</div>
<div class="col-md-4 mb-3">
<label >manufacturer</label>
<input type="text" name="manufacturer[]" placeholder="manufacturer" value="" required >
</div>
</div>
</div>
<button class="btn btn-primary float-right" type="submit">SAVE</button>
</form>
相关路线:
Route::post('purchasesave', 'PurchaseController@purchasesave')->name('purchasesave');
我的控制器 PurchaseController.php
使用这 3 个模型:Purchase
、BillProduct
和 ItemList
.
public function purchaseentryformsave(Request $request)
{
$input = $request->all();
$purchases = [];
$bill_products = [];
$item_lists = [];
foreach( $request->product as $k => $p ) {
$data = collect([
'product' => $request['product'][$k],
'quantity' => $request['quantity'][$k],
'price' => $request['price'][$k],
'manufacturer' => $request['manufacturer'][$k],
]);
$purchases[] = $data->toArray();
$bill_products[] = $data->except(['manufacturer'])->toArray();
$item_lists[] = $data->except(['price', 'manufacturer'])->toArray();
}
Purchases::insert( $purchases );
BillProduct::insert( $bill_products );
ItemList::insert( $item_lists );
return redirect('allpurchasesupplierlist')->with('success','PURCHASE ENTRY ADDED SUCCESSFULLY .');
}
型号
项目列表
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Item_list extends Model
{
protected $table = 'item_lists';
protected $fillable = ['product','quantity'];
}
购买
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Purchase extends Model
{
protected $table = 'purchases';
protected $fillable = ['product','quantity','price'.'manufacturer'];
}
BillProduct
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Billproduct extends Model
{
protected $table = 'bill_products';
protected $fillable = ['product','quantity','price'];
}
最好使用 insert
而不是 create
$purchases = [];
$bill_products = [];
$item_lists = [];
foreach( $request->product as $k => $p ) {
$data = collect([
'product' => $request['product'][$k],
'quantity' => $request['quantity'][$k],
'price' => $request['price'][$k],
'manufacturer' => $request['manufacturer'][$k],
]);
$purchases[] = $data->toArray();
$bill_products[] = $data->except(['manufacturer'])->toArray();
$item_lists[] = $data->except(['price', 'manufacturer'])->toArray();
}
Purchases::insert( $purchases );
BillProduct::insert( $bill_products );
ItemList::insert( $item_lists );