我想往订单表中插入数据,但是数据没有插入到数据库中。我的代码如下,没有显示错误。如何解决?
$saveorder= new Order;
$saveorder->customer_id = $request->input('customer_id');
$saveorder->vendor_id = $request->input('vendor_id');
$saveorder->order_date= Carbon::now()->isoFormat('YYYY-MM-DD');
$saveorder->pickup_date=$request->input('pickup_date');
$saveorder->order_status="Pending";
$saveorder->shipping_address=$request->input('shipping_address');
$saveorder->amount=$request->input('amount');
$saveorder->payment=$request->input('payment');
$saveorder->delivery_method=$request->input('delivery_method');
$saveorder->delievery_fee=5.00;
$saveorder->order_notes=$request->input('order_notes');
$saveorder->save();
模型以下是订单模型。
use HasFactory;
protected $table = 'order';
protected $guarded = ['id'];
protected $fillable = [
'order_date',
'pickup_date',
'order_status',
'shipping_address',
'amount',
'payment',
'delivery_method',
'delivery_fee',
'phone',
'order_notes',
'customer_id',
'vendor_id',
];
protected $casts = [
'id' => 'integer',
];
迁移以下是我的迁移文件。
Schema::create('order', function (Blueprint $table) {
$table->increments('id');
$table->date('order_date');
$table->date('pickup_date');
$table->string('order_status');
$table->string('shipping_address');
$table->decimal('amount', 10, 2);
$table->string('payment');
$table->string('delivery_method');
$table->string('delivery_fee');
$table->string('phone');
$table->string('order_notes');
$table->unsignedInteger('customer_id');
$table->unsignedInteger('vendor_id');
$table->timestamps();
});
没有显示错误,laravel save() 函数不起作用。
答案 0 :(得分:1)
您需要稍微调试一下代码。请按照以下步骤操作。
首先,通过添加以下代码来更新您的刀片文件。这将显示与验证相关的所有错误
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
第二,包装您的方法以将数据保存在 try-catch
块中。它将显示与保存数据的函数中的代码相关的所有错误。
try {
// your code goes here
} catch (Exception $e) {
info($e->getMessage());
}
答案 1 :(得分:0)
$saveorder= new Order();
$saveorder->customer_id = $request->customer_id;
$saveorder->vendor_id = $request->vendor_id;
$saveorder->order_date= Carbon::now()->isoFormat('YYYY-MM-DD');
$saveorder->pickup_date=$request->pickup_date;
$saveorder->order_status="Pending";
$saveorder->shipping_address=$request->shipping_address;
$saveorder->amount=$request->amount;
$saveorder->payment=$request->payment;
$saveorder->delivery_method=$request->delivery_method;
$saveorder->delievery_fee=5.00;
$saveorder->order_notes=$request->order_notes;
$saveorder->save();
答案 2 :(得分:0)
您应该使用 create 函数作为其良好的解决方案和干净的代码,并为其提供经过验证的输入 或在新的 var 中收集所有内容并将其传递给函数 create save 方法通常与 case update 对象一起使用,而不是在数据库中插入新对象最后为请求制作 dd() 以确保您插入的所有输入都在请求中并确保数据库中的数据类型兼容
答案 3 :(得分:-1)
这是保存数据的正确方式。
// validate if you need
$data = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// otherwise
$data = $request->all();
// then add extra fields
$data['order_date'] = Carbon::now()->isoFormat('YYYY-MM-DD');
$data['order_status'] = "Pending";
$data['delievery_fee'] = 500;
// and save
Order::create($data);
class Order extends Model
{
public $guarded = []; // make sure you validate the data if you use this. and remove $protected if you have.
}