2016-05-26 1 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) для плательщика. Не могли бы вы мне помочь?

+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

yup ,, your right, я забыл добавить их внутри модели. Позор, я не мог понять это раньше. Спасибо @ haakym. –

+1

Хотя, 1 вещь, которую я не мог понять, почему она не бросила исключение массового назначения? –

+0

После этого несколько раз вы всегда помните, чтобы проверить lol. Рад, что он работает на вас сейчас. Это хороший момент, я не знаю! – 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

yup it работает тоже. Благодаря AlSan –