向DB添加数据失败而没有错误- Laravel


Adding data to DB fails without an error - Laravel

我在向数据库添加信息时遇到问题。我没有得到任何错误,但每次我试图验证或添加信息到表的孩子,我得到重定向到主页"/",没有得到添加。我真的希望你能帮助我:

PagesController:

    <?php
namespace App'Http'Controllers;
use Illuminate'Http'Request;
use App'Kids;
use App'Guardians;
use App'Donations;
use App'Expenses;
use App'Food;
use App'Medicines;
use App'Inventory;
use App'User;
use App'Http'Requests;
use App'Http'Controllers'Controller;

class PagesController extends Controller
{
     public function viewAddPage(){
        return view('add');
    }
    public function storeKids(Request $request)
    {
    $validation= array(
                      'KidID'=>'required',
                      'fname'=>'required',
                      'lName'=>'required',
                      'DateOfBirth'=>'required',
                      'Sex'=>'required',
                      'Age'=>'required',
                      'SchoolName'=>'required',
                      'SchoolGrade'=>'required',
                      'SchoolGroup'=>'required',
                      'BloodType'=>'required',
                      'Allergies'=>'required',
                      'enroll_date'=>'required',
                      'exit_date'=>'required',
                      'created_by'=>'required',
                      'updated_by'=>'required'
                          );
        $v1= Validator::make(Input::all(),$validation);
        if( $v1->fails())
        {
        return Redirect::to('add/list/')->withErrors($v1);
        }
        else
        { $poststudent=$request->all();
          $data = array('KidID'=>$poststudent['KidID'],
                         'fname'=>$poststudent['fname'],
                         'mName'=>    $poststudent['mName'],
                    'lName'=>    $poststudent['lName'], 
                         'DateOfBirth'=>   $poststudent['DateOfBirth'],
                         'Sex'=>   $poststudent['Sex'],
                         'Age'=>   $poststudent['Age'],
                         'SchoolName'=>   $poststudent['SchoolName'],
                         'SchoolGrade'=>   $poststudent['SchoolGrade'],
                         'SchoolGroup'=>   $poststudent['SchoolGroup'],
                         'BloodType'=>   $poststudent['BloodType'],
                         'Allergies'=>   $poststudent['Allergies'],
                         'enroll_date'=>   $poststudent['enroll_date'],
                         'exit_date'=>   $poststudent['exit_date'],
                         'created_by'=>   $poststudent['created_by'],
                         'updated_by'=>   $poststudent['updated_by']
                         );
        $check=0;
        $check=DB::table('kids')->insert($data);
        if($check > 0)
        {
        return Redirect::to('kids/list/');
        }
        else
        {
        return Redirect::to('add/list/');
        }
        }
    }
}

web.php(航线):

<?php
Route::get('/', function(){
return view('welcome');
});
Route::post('/signin',[
'uses'=>'UserController@postSignIn',
'as'=>'signin'
]);
Route::get('user/logout',function(){
Auth::logout();
return redirect('/');
});
Route::get('/home', [
'uses'=> 'UserController@getDashboard',
'as'=> 'home'
]);
Route::get('kids/list', 'PagesController@viewKidsList');
Route::get('guardians/list', 'PagesController@viewGuardiansList');
Route::get('donations/list', 'PagesController@viewDonationsList');
Route::get('expenses/list', 'PagesController@viewExpensesList');
Route::get('food/list', 'PagesController@viewFoodList');
Route::get('medicines/list', 'PagesController@viewMedicinesList');
Route::get('inventory/list', 'PagesController@viewInventoryList');
Route::get('users/list', 'PagesController@viewUsersList');
Route::get('add/list','PagesController@viewAddPage');
Route::post('/save', array('uses'=>'PagesController@storeKids'));

视图(add.blade.php):

@extends('menu')
@section ('add')
<style>
.imagen{
width:400px;
height:auto;
margin-top: 10px;
margin-left: 40px;
margin-bottom: 10px;
}
.user{
position:absolute;
margin-top: -70px;
right:20px;
font-size:14px;
font-family:"courier";
}
</style>
        <form class ="form" action="<?=URL::to('/save')?>" method="POST">
        <h3><center>New kid Information</center></h3>
             <input type="hidden" name="_token" value="{{ csrf_token() }}">
             <div class="form-group">
                <input type="text" name="KidID" id="KidID" placeholder="Kid ID" class = "form-control">
                <br>
                <input class="form-control" type="text" name="fname" id="fname" placeholder="First Name">
                <br>
                <input class="form-control" type="text" name="mName" id="mName" placeholder="Middle Name">
                <br>
                <input class="form-control" type="text" name="lName" id="lName" placeholder="Last Name">
                <br>
                <input class="form-control" type="text" name="DateOfBirth" id="DateOfBirth" placeholder="Date Of Birth">
                <br>
                <input class="form-control" type="text" name="Sex" id="Sex" placeholder="Sex">
                <br>
                <input class="form-control" type="text" name="Age" id="Age" placeholder="Age">
                <br>
                <input class="form-control" type="text" name="SchoolName" id="SchoolName" placeholder="School Name">
                <br>
                <input class="form-control" type="text" name="SchoolGrade" id="SchoolGrade" placeholder="School Grade">
                <br>
                <input class="form-control" type="text" name="SchoolGroup" id="SchoolGroup" placeholder="School Group">
                <br>
                <input class="form-control" type="text" name="BloodType" id="BloodType" placeholder="Blood Type">
                <br>
                <input class="form-control" type="text" name="Allergies" id="Allergies" placeholder="Allergies">
                <br>
                <input class="form-control" type="text" name="enroll_date" id="enroll_date" placeholder="Enroll Date">
                <br>
                 <input class="form-control" type="text" name="exit_date" id="exit_date" placeholder="Enroll Date">
                <br>
                <input class="form-control" type="text" name="created_by" id="created_by" placeholder="Created By">
                <br>
                 <input class="form-control" type="text" name="updated_at" id="updated_at" placeholder="Enroll Date">
                <br>
           <input type="submit" value="Submit" name="save" class="text" />
        </form>
@endsection

孩子表:

use Illuminate'Support'Facades'Schema;
use Illuminate'Database'Schema'Blueprint;
use Illuminate'Database'Migrations'Migration;
class CreateKidsTable extends Migration
{
public function up()
{
    Schema::create('kids', function (Blueprint $table) {
        $table->increments('id');
        $table->integer('KidID')->unique();
        $table->string('fname');
        $table->string('mName');
        $table->string('lName');
        $table->date('DateOfBirth');
        $table->string('Sex');
        $table->tinyInteger('Age');
        $table->string('SchoolName');
        $table->tinyInteger('SchoolGrade');
        $table->char('SchoolGroup');
        $table->string('BloodType');
        $table->longText('Allergies');
        $table->date('enroll_date');
        $table->date('exit_date');
        $table->string('created_by');
        $table->timestamps();
    });
}
 public function down()
{
    Schema::drop('kids');
}

}

孩子

namespace App;
use Illuminate'Database'Eloquent'Model;
class Kids extends Model
{
protected $table = 'kids';
}

我已经看这个问题好几天了,我真的不知道为什么它不存储什么,它一直把我送到"/"网页。

如果你将可填充数组添加到你的Kids模型

protected $fillable = ['fName', 'mName','lName'...];

然后可以使用eloquent插入记录,这比查询生成器简单得多:

$kids = Kids::create($request->all());

您的验证器相当复杂,因此将其移动到FormRequest:

php artisan make:request KidsRequest

将验证数组添加到Requests'KidsRequest中的rules()方法中,并确保将authorize()方法设置为返回true。

你现在可以在你的store方法中输入提示:

public function storeKids(KidsRequest $request)

您的验证将自动应用。

现在我们有了下面的方法:

public function storeKids(KidsRequest $request)
{
        $kids = Kids::create($request->all());
        return Redirect::to('add/list/');      
}

我想你会同意这样整洁多了!

你的代码有点不正常,如果你坚持命名约定:index(), show(), store(), edit()等,你可以使用资源路由来代替,这样你就不必单独列出每个路由,并尽量保持你的数据库格式上的字段名一致,蛇形大小写(例如last_name)在laravel中优先用于db字段。

如果你正在努力理解其中的一些,那么有一些关于laracast的优秀教程

当然您需要遵循@craig_h答案,并注意您在验证语句中需要updated_by,而不是在迁移中进行所以你要加上

您应该在代码中的某些地方添加dd(),以确保您实际上击中了良好的控制器动作。我怀疑你的路由有问题,也许是一些auth中间件或其他东西。