存储具有作者姓名的数据 - laravel 5.2

时间:2016-05-03 23:15:10

标签: laravel eloquent has-many relation

我与模型用户和报告有很多关系。 我想为报告设置作者姓名。 (就像博客文章的作者)

我的模特用户:

public function reports() {
    return $this->hasMany('App\Report', 'author_id');
}

模型报告

public function user() {
    return $this->belongsTo('App\User', 'author_id');
}

和我的控制器:

public function create()
{
    $category = Category::lists('title','id');
    return view('dash.reports.create')->with('category', $category);
}

/**
 * Store a newly created resource in storage.
 *
 * @return void
 */
public function store(Request $request)
{
    $this->validate($request, ['title' => 'required', ]);

    Report::create($request->all());

    Session::flash('flash_message', 'Report added!');

    return redirect('dash/reports');
}

我可以在phpmyadmin中设置,但是如何使用我的控制器进行设置?

编辑:我的观点:

{!! Form::open(['url' => '/dash/reports', 'class' => 'form-horizontal']) !!}

       <div class="form-group {{ $errors->has('title') ? 'has-error' : ''}}">
            {!! Form::label('title', 'Servizio', ['class' => 'col-sm-3 control-label']) !!}
            <div class="col-sm-6">
                {!! Form::text('title', null, ['class' => 'form-control', 'required' => 'required']) !!}
                {!! $errors->first('title', '<p class="help-block">:message</p>') !!}
            </div>
        </div>

       <div class="form-group {{ $errors->has('title') ? 'has-error' : ''}}">
            {!! Form::label('date', 'Data lavorativa', ['class' => 'col-sm-3 control-label']) !!}

            <div class="col-sm-2">
                {!! Form::selectRange('day', 1, 31, null,  ['class' => 'form-control']) !!}
                {!! $errors->first('day', '<p class="help-block">:message</p>') !!}
            </div>

            <div class="col-sm-2">
                {!! Form::selectMonth('month', null,  ['class' => 'form-control']) !!}
                {!! $errors->first('month', '<p class="help-block">:message</p>') !!}
            </div>

            <div class="col-sm-2">
                {!! Form::select('year', array('2016' => '2016', '2015' => '2015'), null,  ['class' => 'form-control']) !!}
                {!! $errors->first('year', '<p class="help-block">:message</p>') !!}
            </div>
        </div>

        <div class="form-group {{ $errors->has('category_id') ? 'has-error' : ''}}">
            {!! Form::label('category_id', 'Cliente', ['class' => 'col-sm-3 control-label']) !!}
            <div class="col-sm-6">
                {!! Form::select('category_id', $category, null, ['class' => 'form-control'] ) !!}
                {!! $errors->first('category_id', '<p class="help-block">:message</p>') !!}
            </div>
        </div>


<div class="form-group">
    <div class="col-sm-offset-3 col-sm-3">
        {!! Form::submit('Create', ['class' => 'btn btn-primary form-control']) !!}
    </div>
</div>
{!! Form::close() !!}

2 个答案:

答案 0 :(得分:5)

很简单。用此替换Report::create...

$user   = Auth::user();
$report = new Report($request->all());
$report->author()->associate($user);
$report->save();

确保use Auth;位于顶部。

这使用Auth对象来获取当前用户,
使用Report数据构建新的$request,不用保存,
告诉我们将$user与模型的author相关联的报告,
使用作者信息保存报告。

答案 1 :(得分:0)

溶液:

public function store(Request $request)
{
    $this->validate($request, ['title' => 'required', ]);

    $user = Auth::user()->id;
    $report = new Report($request->all());
    $report->author_id = $user;
    $report->save();

    Session::flash('flash_message', 'Report added!');

    return redirect('dash/reports');
}