【问题标题】:Laravel 5.8: Insertion into database does not seem to be workingLaravel 5.8:插入数据库似乎不起作用
【发布时间】:2021-07-27 07:59:19
【问题描述】:

我在一家在线商店工作,想在payments 表中插入一些付款详情。

除了向表中插入数据的插入过程之外,一切都很好:

if (!empty($existPayment)) {
    $existPayment->delete();
    $payment = Payment::create([
        'pay_type_id' => '186',
        'pay_date' => jdate()->format('Y/m/d'),
        'pay_amount' => $order->ord_total * 10,
        'pay_ord_id' => $order->ord_id,
        'pay_status_id' => '182',
        'pay_creator_id' => auth()->user()->usr_id,
        'pay_confirm' => '1',
    ]);
}

所以为了知道问题出在哪里,我尝试了这个:

if (!empty($existPayment)) {
    dd('Exists');
}

我得到了结果Exists,然后我尝试了:

if (!empty($existPayment)) {
        if($existPayment->delete()){
            dd('Deleted');
        }
    }

我又得到了正确的结果,即Deleted,之后我尝试了:

if (!empty($existPayment)) {
        $existPayment->delete();
        $payment = Payment::create([
            'pay_type_id' => '186',
            'pay_date' => jdate()->format('Y/m/d'),
            'pay_amount' => $order->ord_total * 10,
            'pay_ord_id' => $order->ord_id,
            'pay_status_id' => '182',
            'pay_creator_id' => auth()->user()->usr_id,
            'pay_confirm' => '1',
        ]);

        dd($payment);
    }

我得到了这个结果:

"pay_type_id" => "186"
"pay_date" => "1400/05/05"
"pay_amount" => 750000.0
"pay_ord_id" => 9222
"pay_status_id" => "182"
"pay_creator_id" => 2
"pay_confirm" => "1"
"updated_at" => "2021-07-27 12:12:06"
"created_at" => "2021-07-27 12:12:06"
"pay_id" => 8929

但是当我检查数据库时,数据没有以某种方式插入,我不知道为什么!

我也将这段代码放在try..catch,但没有显示任何错误。

所以,如果您知道如何解决此问题或对如何调试有任何想法,请告诉我...

我真的很感激。

提前致谢。

型号:

class Payment extends Model
{
    use SoftDeletes;

    protected $table = "payments";
    protected $primaryKey = "pay_id";
    protected $guarded = [];
    protected $appends = [
        'status_label', 'type_label'
    ];
    protected $fillable = [
        'pay_type_id ','pay_date','pay_amount','pay_ord_id','pay_status_id','pay_creator_id','pay_confirm'   // all the columns you want
    ];
    ...

【问题讨论】:

  • 所以你的数据没有插入对吗?
  • @JEJ 是的,它没有插入!!
  • 有效吗??
  • @JEJ 谢谢你的回答,我现在去测试一下
  • 好的,如果它不起作用,请更新我

标签: php laravel debugging laravel-5.8


【解决方案1】:

试试这个

 $payment = new Payment;
 $payment->pay_type_id = '186';
 $payment->pay_date = jdate()->format('Y/m/d');
 $payment->pay_amount = $order->ord_total * 10;
 $payment->pay_ord_id =  $order->ord_id;
 $payment->pay_status_id = '182';
 $payment->pay_creator_id = auth()->user()->usr_id;
 $payment->pay_confirm = '1';
 $payment->save();

您还可以使用Fillable 的简单方法

为此在您的付款模式中添加

 protected $fillable = [
    'pay_type_id ','pay_amount '   // all the columns you want 
];

并使用问题中提到的 Create 方法

$payment = Payment::create([
        'pay_type_id' => '186',
        'pay_date' => jdate()->format('Y/m/d'),
        'pay_amount' => $order->ord_total * 10,
        'pay_ord_id' => $order->ord_id,
        'pay_status_id' => '182',
        'pay_creator_id' => auth()->user()->usr_id,
        'pay_confirm' => '1',
    ]);

注意模型必须导入控制器 use App\Payment;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-18
    • 2019-10-04
    • 2021-09-27
    • 2019-03-28
    • 2021-07-19
    • 2020-04-05
    • 2017-12-12
    • 2020-03-23
    相关资源
    最近更新 更多