2016-05-26 70 views
0

我试图在会话中存储的数据库中存储payer_id和total_price。当我将它们回显出来时,它们显示在屏幕上,但是当我尝试创建记录时,它不起作用。这里是我的代码:无法在laravel中保存会话的值

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和varchar(255整数)为payer_id。你能帮我解决这个问题吗?

+0

所有其他值都工作正常。 –

回答

1

作为默认的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

你有这个设置在你的所有属性的模型?

+1

是的,你说得对,我忘了将它们添加到模型中。耻辱我不能早点弄清楚。谢谢@haakym。 –

+1

虽然,我无法弄清楚的一件事是为什么它不抛出集体作业异常? –

+0

发生几次后,你总是记得检查哈哈。很高兴它现在为你工作。这是一个好点,我不知道! – haakym

0

您也可以使用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'), 
]); 
+0

它也可以。谢谢AlSan –