對不起,如果這個問題是其他地方問的,但我到處搜索,但無法找到答案。好吧,我面臨這個問題上Laravel 5.0,當我嘗試從一個請求得到一個變量的,即時得到空值生產服務器上但IM的開發服務器上得到一個空字符串。該值在請求中不存在,即當表單提交時該字段爲空。例如。laravel檢索請求輸入返回null
// ProductController
public function store(Request $request) {
// this field is actually empty in the submitted form
$price = $request->price;
// when it gets to the server this is how this value looks like :
// $price in production server : null
// $price in development server : ''
}
當我嘗試將對象保存到數據庫像
Product::save($request->only('name', 'price'));
我得到這個錯誤(僅在生產服務器)
SQLSTATE [23000]:完整性約束衝突: 1048欄'價格' 不能爲空
請注意,價格列在mysql表上有'默認0'
爲什麼會發生這種情況?
UPDATE:
這段時間我認爲請求 - >輸入()方法返回空字符串(「」),如果字段不存在。但只知道我看着laravel源看到這個:
public function input($key = null, $default = null)
{
$input = $this->getInputSource()->all() + $this->query->all();
return array_get($input, $key, $default);
}
這裏它返回null作爲默認值。那麼爲什麼我在開發服務器上獲得空字符串?
我試過$請求 - >只(),但它也返回null。這是由不同的PHP版本呢? – bazi
我在說你應該*不*請求 - >只有 –
好。但如果我使用一個數組像$ data = ['name'=> $ request-> name,'price'=> $ request-> price]; ,$ data ['price']仍然爲空。這也不能解決我的問題。 – bazi