无法从 laravel 中的会话中保存值

Can't save value from session in laravel

我正在尝试将 payer_id 和 total_price 存储在我已存储在会话中的数据库中。当我回显它们时,它们确实显示在屏幕上,但是当我尝试以同样的方式创建记录时,它不起作用。这是我的代码:

echo (int)session()->get('quantity') * (int)session()->get('pc_cost');
echo session()->get('paypal_payment_id');

上面这些行确实工作得很好,但是当我执行以下操作时

$price = (int)session()->get('quantity') * (int)session()->get('pc_cost');
$payer_id = session()->get('paypal_payment_id');
$order = Order::create([
    'user_id' => Auth::User()->id,
    'ordered_pc_id' => $ordered->id,
    'total_price' => $price,
    'deadline' => session()->get('expected'),
    'quantity' => session()->get('quantity'),
    'payer_id' => $payer_id,
    'status' => 0,
    'notes' => session()->get('notes'),
]);

我还检查了数据库中的数据类型,total_price 是整数,payer_id 是 varchar(255)。你能帮我解决这个问题吗?

作为默认 Eloquent 模型防止批量分配。由于此行为,您的值可能未在 Model::create() 调用中设置。

您可以使用 $fillable 属性在您的模型上批量分配属性,如下所示:

class Order extends Model
{
    protected $fillable = [
        'user_id',
        'ordered_pc_id',
        'total_price',
        'deadline',
        'quantity',
        'payer_id',
        'status',
        'notes',
    ];
}

在文档中查看更多详细信息:https://laravel.com/docs/5.2/eloquent#inserting-and-updating-models

您是否在模型中为所有属性设置了此设置?

您还可以使用允许批量分配的 forceCreate():

$order = Order::forceCreate([
    'user_id' => Auth::User()->id,
    'ordered_pc_id' => $ordered->id,
    'total_price' => $price,
    'deadline' => session()->get('expected'),
    'quantity' => session()->get('quantity'),
    'payer_id' => $payer_id,
    'status' => 0,
    'notes' => session()->get('notes'),
]);