данные не введены в базу данных с использованием Lumen (Laravel)

Я новичок в Laravel и Lumen Framework.

Я пытаюсь создать API, используя Lumen Framework. Я хотел ввести данные в базу данных. Но база данных обновляется с помощью id, date_created и date_updated. Но введенные мной данные там не вставляются. Вместо этого он показывает пустое значение для строковых входов и 0 для целочисленных входных данных.

Вот мой код контроллера:

<?php
namespace App\Http\Controllers;

use App\Place;
use App\User;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class PlaceController extends Controller{

public function savePlace(Request $request){
$place = Place::create($request->all());
return response()->json($place);
}
}

И вот мой код миграции:

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePlacesTable extends Migration
{
public function up()
{
Schema::create('places', function (Blueprint $table) {
$table->increments('id');
$table->string('place');
$table->integer('pincode');
$table->integer('bed');
$table->integer('square_feet');
$table->integer('price');
$table->timestamps();
});
}

public function down()
{
Schema::drop('places');
}
}

Я делаю это правильно? Должен ли я использовать любые другие коды вместе с этим?

Пожалуйста помоги.

Заранее спасибо.

РЕДАКТИРОВАТЬ :

И вот мой код модели места:

<?php
namespace App;

use Illuminate\Database\Eloquent\Model;

class Place extends Model{

protected $fillable = ['place', 'pincode', 'bed', 'square_feet', 'price'];
}

РЕДАКТИРОВАТЬ 2:

Я отправляю запрос из приложения angularjs (ионные рамки).

Вот мой http.post код:

app.controller('NavCtrl', ['$scope', '$http', '$location', '$window', function($scope,$http,$location,$window){
$scope.data = {};
$scope.savedata = function(){
$http({
url : "http://localhost/lumen/public/add",
method : "POST",
headers: $headers,
data : {'place':$scope.data.place,'pincode':$scope.data.pincode,'bed':$scope.data.bed,'square_feet':$scope.data.square_feet,'price':$scope.data.price}
})
.success(function(data,status,headers,config){
console.log(data);
$scope.navigat('/success.html');
})
.error(function(){
alert("failed");
})
};

$scope.navigat = function(url){
$window.location.href=url;
};
}]);

А вот мой routes.php код:

<?php
header("Access-Control-Allow-Origin: *");

$app->get('/', function () use ($app) {
return $app->version();
});

$app->post('lumen/public/add','PlaceController@savePlace');

0

Решение

В соответствии с этот ответ, Похоже, проблема заключается в том, как angular размещает данные. По сути, он пытается POST-данные как JSON, но PHP не делает ничего, чтобы превратить данные JSON в данные запроса.

Чтобы заставить это работать, вам нужно сделать две вещи.

Во-первых, вам нужно изменить Content-Type заголовок к application/x-www-form-urlencoded, Простое изменение заголовка типа контента не решит проблему, потому что angular все еще отправляет данные в виде запроса JSON.

Поэтому, во-вторых, вам нужно изменить данные, отправленные из формата JSON, в формат строки запроса (имя = значение&имя = значение).

Итак, обновите ваш код до чего-то вроде этого:

$http({
url : "http://localhost/lumen/public/add",
method : "POST",
headers: { "Content-Type" : "application/x-www-form-urlencoded" },
data : [
'place=' + encodeURIComponent($scope.data.place),
'pincode=' + encodeURIComponent($scope.data.pincode),
'bed=' + encodeURIComponent($scope.data.bed),
'square_feet=' + encodeURIComponent($scope.data.square_feet),
'price=' + encodeURIComponent($scope.data.price)
].join('&')
})
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]