我的新模特:
<?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
但错误仍然存在。我做错了什么?
答案 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
)。