将数据插入到服务器上不适用于Laravel 5.4的数据库中(在localhost上工作)

时间:2017-06-08 11:07:38

标签: mysql laravel-5.4

我正在尝试使用Laravel 5.4在cpanel服务器上部署涉及基本CRUD操作的项目。 我试图将一个项目插入我的数据库。我的更新和删除代码似乎正在工作,但插入不是。

请注意,在Localhost上一切正常,但在服务器上插入不是。

这里是代码和不同的php文件。 我的控制器是gendersController,它具有所有CRUD功能。

Web.php(性别路线)

Route::resource('/genders','gendersController');

Create.php(我们看到一个包含单个字段和提交按钮的表单的视图)

@extends('layout.app')
@section('body')
<br>
<a href="/genders" class="btn btn-info" >Back</a>

<div class="col-lg-4 col-lg-offset-4">
<h1>{{substr(Route::currentRouteName(),8)}} item</h1>
<form class="form-horizontal" action="/genders/@yield('editid')" 
method="POST">
{{csrf_field()}}
@section('editMethod')
@show
<fieldset>
<div class="form-group">
<div class="col-lg-10">
   <label>Gender Type <input type="text" class="form-control"  
name="gendertypes" id="gendertypes" value="@yield('editgendertypes')">
 </label>
    <br>
    <button type="submit" class="btn btn-success">Submit</button>
   </div>
</div>
</fieldset>
</form>
   @include('partial.errors')
   </div>
   @endsection

gendersController.php(性别控制器)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\gender;
use DB;

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

     $genders= gender::paginate(1000);
    return view('gender.index',compact('genders'));
}

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

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)
{

    $gender = new gender;
    $this->validate($request,[
           'gendertypes'=>'required',
        ]);
   $gender->gendertypes=$request->gendertypes;

   $gender->save();
   session()->flash('message','Added Successfully');
   return redirect('/genders');

}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
     return $id;
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
   $gender = gender::find($id);
    return view('gender.edit',compact('gender'));
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function update(Request $request, $id)
{
    $gender = gender::find($id);
    $gender->gendertypes=$request->gendertypes;
   $gender->save();
   session()->flash('message','Updated Successfully');
   return redirect('/genders');
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    $gender=gender::find($id);
   $gender->delete();
   session()->flash('message','Delete Successfully');
   return redirect('/genders');
}
}

以下是图片

主视图(这是显示数据库中的所有数据。还有添加按钮

url:domainname / genders

![性别观点]:http://imgur.com/a/mqEq3

添加新的性别视图

url:domainname / genders / create

![创建视图]:http://imgur.com/a/9Houv

由于某种原因添加后,我被重定向到主视图页面而没有任何插入到数据库中(因此,新数据不会显示在主视图页面上)

无法找到错误!!

1 个答案:

答案 0 :(得分:0)

检查您的表单发布到的网址。因为您对表单/genders/x中的网址进行了硬编码,而不是使用生成的网址相对于您的安装文档根目录的命名路由,表单将发布到

http://your.domain.com/genders/

而不是

http://your.domain.com/some_folder_name/genders

这就是为什么在localhost上一切正常,但是一旦你在子目录中部署它就不会。

您正在使用资源路由,因此route('genders.store')在您的视图中应该可以正常运行。通过php artisan route:list检查可用的路线及其名称。

旁注:尝试并避免将文件放在Laravel的公共路径之外的public_html目录(或公共子目录)。这就是为什么某些目录和文件在文档根目录之外的原因。