Laravel:创造了新的雄辩模型,但是laravel并不认识它

时间:2015-04-28 14:22:57

标签: php exception laravel

我的新模特:

<?php

class Style extends Eloquent {

    protected $table = 'styles';

}

定义路线:

Route::group(array('prefix' => '/templates'), function(){
   Route::post('/style-create', array('uses' => 'StyleController@postCreateStyle', 'as' => 'postCreateStyle'));
});

模特的控制器:

<?php

class StyleController extends BaseController {

    public function postCreateStyle() {

        $style = new Style();
        $style->save();

        return Redirect::route('getStyleHome');
    }

}

和html表单:

<form role="form" method="post" action="{{ URL::route('postCreateStyle') }}">
   <!-- FIELDS -->

   <input type="submit" value="{{ isset($style) ? 'Save' : 'Create' }} template" class="btn btn-lg btn-primary" />
</form>

如果我点击提交,我就会收到此错误:

[2015-04-28 14:11:59] production.ERROR: exception 'Symfony\Component\Debug\Exception\FatalErrorException' with message 'Call to undefined method Style::save()' in C:\xampp\htdocs\cspage\app\controllers\StyleController.php:18
Stack trace:
#0 [internal function]: Illuminate\Exception\Handler->handleShutdown()
#1 {main} [] []

我已重新启动xampp,重新导入整个数据库,我已清除自动加载:php artisan dump-autoload但错误仍然存​​在。我做错了什么?

2 个答案:

答案 0 :(得分:0)

我不知道Laravel的内部结构是如何工作的,但问题是由迁移和模型的名称引起的。它是一样的。根据@ceejayoz的建议,我创建了一个新的迁移:create_styles_table并重新创建了模型:Style

答案 1 :(得分:0)

  

我不知道Laravel的内部结构如何运作,但问题是由迁移和模型的名称引起的。它是一样的。正如@ceejayoz所建议的那样,我创建了一个新的迁移:create_styles_table并重新创建了模型:Style

Laravel 4缺少命名空间意味着您必须对类的命名有点小心。如果您执行php artisan migrate:make style,则会创建一个名为Style的新班级。如果您创建Style模型,Laravel可能会加载迁移类而不是您期望的Eloquent模型 - 因此,它将缺少预期的功能。

在Laravel 5中,命名空间意味着App\Style模型与Style迁移之间没有冲突(但你必须对迁移名称保持一点小心 - 我建议一些东西更清楚,如create_styles_table)。

相关问题