尝试插入时获取不正确的表

时间:2015-01-18 15:47:01

标签: laravel eloquent

我的插入物有一个奇怪的问题。所以我的迁移是:

class CreatePhotoCategoryTable extends Migration {
public function up()
{
    Schema::create('photo_category',function($table){
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });
}
public function down()
{
    Schema::drop('photo_category');
}

}

我的模特:

class PhotoCategory extends Eloquent {
protected $fillable = array('name');
public static $rules = array(
    'name'         =>  'required',
);
}

我的控制员:

class PhotoCategory extends BaseController{
public function getAddPage(){
    return View::make('admin.photo_category.addPhotoCategory');
}
public function postCreate(){
    $validator = Validator::make(Input::all(), \PhotoCategory::$rules);
    if($validator->passes()){
        $oPhotoCategory = new \PhotoCategory();
        $oPhotoCategory->name = Input::get('name');
        $oPhotoCategory->save();
        $iLastId = $oPhotoCategory->id;
        return Redirect::to('/administration/category_photo/edit/'.$iLastId)
            ->with('message_succes','Succes');
    }
    return Redirect::to('/administration/category_photo/add')
        ->with('message_error','Error')
        ->withErrors($validator)
        ->withInput();
}

显然我的数据库中的表名为photo_category但是当我尝试保存到此表时,我得到了sql错误: SQLSTATE [42S02]:未找到基表或视图:1146表' photo_categories'不存在。那么为什么我的save()方法得到表photo_categories而不是photo_category。请帮帮我。

2 个答案:

答案 0 :(得分:1)

Laravel中数据库表的命名约定是复数。因此,Laravel假设您的模型名称PhotoCategory表示您的表名为photo_categories。您有两种选择:

  1. 将表名更改为photo_categories
  2. 通过添加:

    在模型中指定表名

    protected $table = 'photo_category';

答案 1 :(得分:0)

确保使用模型中的不同名称命名控制器,因为这可能会带来一些问题,因为两者都是类,并且两者具有相同的名称。 此外,您的Model类表示您的数据库表,因此您需要将表名指定为

protected $table = 'photo_category';