簡體   English   中英

Laravel 5:數據庫無法通過下拉菜單保存

[英]Laravel 5: Database doesn't save through dropdown

我想通過dropdownlist保存一些數據..加載頁面后,數據庫也通過下拉菜單獲取,但是單擊“保存”按鈕后數據庫不保存。 我認為課程遷移表存在問題,但我無法理解。 [風景是在上課時,學生可以從下拉列表中上課。]

這是我的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Course;
use App\TheClass;
use Redirect;

class courseController extends Controller
{
    public function index()
    {
        $alldata=Course::all();
        return  view('course.index',compact('alldata'));
    }


    public function create()
    {
         $input=\App\TheClass::all();   
        return view('course.create',compact('input'));
    }


    public function store(Request $request)
    {
        $input = $request->all();
        Course::create($input);
        return redirect('course');
    }
}

這是我的查看頁面:

<html>
    <head> 
        <title> Create Course </title>
         <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
        <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script> 
    </head>
    <body>

        <div class="container" >
            <h3> Create course </h3>
        {!! Form::open(array('route' => 'course.store','class'=>'form-horizontal'))  !!}
        {!! Form::token(); !!}
            <?php echo csrf_field(); ?>
            <div class="form-group">
                <label>Course Code</label>
                <input type="text" name="course_code" class="form-control"  placeholder="Code">
            </div>
            <div class="form-group">
                <label>Course Title</label>
                <input type="text" name="course_title" class="form-control"  placeholder="Title">
            </div>
            <div class="form-group">
                <label>Course Credit</label>
                <input type="text" name="course_credit" class="form-control"  placeholder="Credit">
            </div>
   <div class="form-group">
            <label for="">Class</label>
            <select class="form-control input-sm" name="class_id" >
            @foreach($input as $row)
            <option value="{{$row->class_id}}">{{$row->class_name}}</option>

            @endforeach
            </select>
          </div>

            <button type="submit" class="btn btn-default">Submit</button>
        {!! Form::close() !!}
        </div>
    </body>
</html>

課程表遷移:

<?php

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

class CreateCourseTable extends Migration
{
    public function up()
    {
        Schema::create('courses', function (Blueprint $table) {
            $table->increments('course_id');
            $table->string('course_code',10);
             $table->string('course_title',50);
             $table->string('course_credit');
            $table->integer('class_id')->unsigned(); 
        $table->timestamps();
        $table->foreign('class_id')->references('id')->on('classes');  
        });
    }

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

類表遷移:

<?php

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

class CreateClassTable extends Migration
{

    public function up()
    {
        Schema::create('classes', function (Blueprint $table) {
            $table->increments('id');
            $table->string('class_name',10);            
            $table->timestamps();
        });
    }


    public function down()
    {
        //
    }
}

{{$row->class_id}}更改為{{$row->class_id}} {{$row->id}}

因為您的類表沒有class_id列。

  • 首先,您需要為模型添加$fillable ,因為create方法使用Mass Assignment
  • 其次,我在遷移中看不到任何category字段。 您的select具有名稱category因此數據庫中的名稱也應為category字段。

基本上在這里您需要使用一對多

PS沒有足夠的意見要回答。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM