Sorry, wenn diese Frage an anderer Stelle gefragt wird, aber ich habe überall gesucht, konnte aber die Antwort nicht finden. Nun, ich bin mit diesem Problem konfrontiert auf Laravel 5.0, wenn ich versuche, eine Variable aus einer Anfrage zu bekommen, Im null Wert auf Production Server bekommen aber im immer eine leeren Zeichenkette auf dem Development Server. Der Wert ist in der Anfrage nicht vorhanden, dh das Feld war leer, als das Formular abgeschickt wurde. z.B.laravel Abfrageanforderung Eingabe gibt 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 : ''
}
Wenn ich versuche, das Objekt in eine Datenbank wie
Product::save($request->only('name', 'price'));
ich diesen Fehler zu speichern (nur auf Produktionsserver)
SQLSTATE [23000]: Integrität Einschränkungsverletzung: 1048 Spalte 'Preis' kann nicht null sein
HINWEIS, dass die Preisspalte 'Standard 0' auf Mysql Tabelle hat
Warum passiert das?
UPDATE:
Während dieser ganzen Zeit i die Anfrage- dachte> input() -Methode leere Zeichenfolge ('') zurückgeführt, wenn das Feld nicht vorhanden war. aber nur weiß, dass ich an der Laravel Quelle sah dies zu sehen:
public function input($key = null, $default = null)
{
$input = $this->getInputSource()->all() + $this->query->all();
return array_get($input, $key, $default);
}
hier es gibt null zurück, als Standardwert. Warum bekomme ich dann einen leeren String auf dem Entwicklungsserver?
Ich habe $ Anfrage- versucht,> nur(), aber es gibt auch null.Ist das überhaupt mit verschiedenen PHP-Versionen verbunden? – bazi
Ich sage, dass Sie * nicht * Anfrage verwenden sollten-> nur –
okay. aber wenn ich ein Array wie $ data = ['name' => $ request-> name, 'price' => $ request-> price]; , $ data ['price'] ist immer noch null. das löst auch mein Problem nicht. – bazi