【问题标题】:Make records for database with form in laravel在 laravel 中使用表单为数据库创建记录
【发布时间】:2014-08-13 00:22:06
【问题描述】:

我尝试使用这种语法在我的数据库中填写表单

查看:

@extends('layouts.default')

@section('content')
    <h1>Create New Authors Page</h1>

    {{Form::open(array('url'=>'authors/create','action'=>'AuthorsController@buat'))}}

        @include('common.show_error')

        <p>
            {{Form::label('name', 'Name: ')}}<br>
            {{Form::text('name', Input::old('name'))}}
        </p>

        <p>
            {{Form::label('bio','Biography')}}<br>
            {{Form::textarea('bio', Input::old('bio'))}}
        </p>

        <p>{{Form::submit('Add Authors')}}</p>

    {{Form::close()}}
@stop

控制器(AuthorsController):

public function buat()
{
    Author::create(array(
        'name'=>Input::get('name'),
        'bio'=>Input::get('bio')
    ));

    return Redirect::route('authors')
        ->with('message','New Author Succesfully Added');
}

旋转:

Route::post('authors/create', 'AuthorsController@buat');

它没有错误地通过了,但是数据库什么也没填...空白没有任何记录..

但是。当我在控制器中使用此语法时,它可以工作:

public function buat(){
    $authorr = new Author;

    $authorr->name  = Input::get('name');;
    $authorr->bio   = Input::get('bio');;

    $authorr -> save(); 

    return Redirect::route('authors')
        ->with('message','New Author Succesfully Added');
}

请帮我用第一种语法填充数据库

【问题讨论】:

  • 可能MassAssignementException 被抛出,但您在app/config/app.php 中有debug = false,所以您没有看到任何错误。检查配置,然后确保您的模型可以填充数组,如下所述laravel.com/docs/eloquent#mass-assignment

标签: database forms laravel eloquent


【解决方案1】:

我可以在您使用的表单中看到:

{{ Form::open(array('url'=>'authors/create','action'=>'AuthorsController@buat')) }}

您应该使用urlaction,但不能同时使用:

{{ Form::open(array('url'=>'authors/create')) }}

或者这个:

{{ Form::open(array('action'=>'AuthorsController@buat')) }}

顺便说一句,你可以使用这个:

$author = Author::create(array(
    'name'=>Input::get('name'),
    'bio'=>Input::get('bio')
));

if($author) {
    return Redirect::route('authors')
                   ->with('message', 'New Author Succesfully Added');
}

但请确保您已在 Author 模型中声明了 $fillable 数组,例如:

protected $fillable = array('name', 'bio');

A;因此您可以声明一个空的 $guarde 数组而不是 $fillable 以允许任何字段进行批量赋值,如下所示:

protected $guarded = array();

另外,通过设置在app/config/app.php 文件中启用调试很有用:

debug => true,

因此您会收到信息丰富的错误消息。

【讨论】:

    猜你喜欢
    • 2011-07-16
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 1970-01-01
    • 2015-05-03
    • 2022-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多