web-dev-qa-db-ja.com

LARAVEL 5.5-Eloquentモデルを使用したFORMからデータベースへのデータの挿入

データベースへのデータの挿入に問題があります。

私が今までにしたことはすべて:

次の方法で、コントローラーと移行を使用してモデルを作成します。

php artisan make:model Cars -mcr


だから、今では私のファイルはすべてこのように見えます:

車-モデル

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cars extends Model
{

}

AddCar.blade.php-ビュー

<form action="{{ action('CarsController@store') }}" method="post">
    {{ csrf_field() }}
    <input type="text" name="brand" placeholder="Marka">
    <input type="text" name="model" placeholder="Model">
    <input type="text" name="doors" placeholder="Ilość drzwi">
    <input type="text" name="priceHour" placeholder="Cena za godzinę">
    <input type="text" name="priceDay" placeholder="Cena za dzień">
    <input type="text" name="priceWeek" placeholder="Cena za tydzień">
    <input type="text" name="priceMonth" placeholder="Cena za miesiąc">
    <input type="text" name="priceYear" placeholder="Cena za rok">
    <input type="submit" value="Osadź">

</form>

CarsController-コントローラー

namespace App\Http\Controllers;

use App\Cars;
use Illuminate\Http\Request;

class CarsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return "test";
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {

    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $cars = new Cars;
        $cars->brand = $request->input('brand');
        $cars->brand = $request->input('model');
        $cars->brand = $request->input('type');
        $cars->brand = $request->input('doors');
        $cars->priceHour = $request->input('priceHour');
        $cars->priceDay = $request->input('priceDay');
        $cars->priceWeek = $request->input('priceWeek');
        $cars->priceMonth = $request->input('priceMonth');
        $cars->priceYear = $request->input('priceYear');
        $cars->save();
        return redirect('admin.AddCar');
    }

web.php-ルーティング

Route::resource('/cars', 'CarsController');

移行

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

class CreateCarsTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('cars', function (Blueprint $table) {
            $table->increments('id');
            $table->string('brand');
            $table->string('model');
            $table->string('type');
            $table->integer('doors');
            $table->string ('priceHour')->nullable();
            $table->string('priceDay')->nullable();
            $table->string('priceWeek')->nullable();
            $table->string('priceMonth')->nullable();
            $table->string('priceYear')->nullable();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('cars');
    }
}


すべてのフィールドに入力して「Osadz」をクリックした後に受信するエラー= submit is:

SQLSTATE [HY000]:一般エラー:1364フィールド 'model'にはデフォルト値がありません(SQL:carsbrandpriceHourpriceDaypriceWeekpriceMonthpriceYearupdated_atcreated_at)値(3、3、53、3、35、3、2018-01-30 09:36:57、2018-01-30 09:36:57))



そして私の質問は、私のコードに欠けているデフォルト値は何ですか?

6
Kamil Lonowski

「モデル」

車のモデルに入力可能なフィールド「モデル」を追加する必要があります。

または、移行ファイルで最初に値を指定したくない場合は、フィールドに-> nullable()を追加できます。

3
CritingZ

皆さんありがとう、あなたは素晴らしい!

すでに問題を解決したので、ビューのフィールドを見逃しました:

<input type="text" name "type" placeholder="Typ"/>

nULLにすることはできません

そして、私はモデルを「修正」します:

namespace App;

use Illuminate\Database\Eloquent\Model;

class Cars extends Model
{
    protected $fillable = [

        "brand", "model" , "type" , "doors" , "priceHour" ,
        "priceDay" , "priceWeek" , "priceMonth" , "priceYear"
        ];
}

ありがとう。良い一日を !

1
Kamil Lonowski

テーブル内のモデル列をヌル可能として定義するか、移行ファイルでデフォルト値を指定する必要があります。エラーは、この入力が欠落していることを示しています:

<input type="text" name="model" placeholder="Model">

// examples for your migration
$table->string('model')->nullable();
// or
$table->string('model')->default('foo');

または、どちらも機能しない場合は、検証を追加して、正しいデータがコントローラーに送信されることを確認します。

コントローラでは、次のようにルールを定義できます。

$validatedData = $request->validate([
    'model' => 'required|string|max:255',
    'Brand' => 'required|string',
    ......
]);
0
user320487

ここで、QuartUpdatManufactursはモデル名で、値を直接挿入します。$ requestにはいくつかの値があります。

$insert_id = Module::insert("QuartUpdatManufacturs", $request);
0
Rajendra Rajput