use*_*101 2 has-many relation laravel eloquent
我与模型用户和报告有很多关系.我想为报告设置作者姓名.(就像博客文章的作者)
我的模特用户:
public function reports() {
return $this->hasMany('App\Report', 'author_id');
}
Run Code Online (Sandbox Code Playgroud)
模型报告
public function user() {
return $this->belongsTo('App\User', 'author_id');
}
Run Code Online (Sandbox Code Playgroud)
和我的控制器:
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');
}
Run Code Online (Sandbox Code Playgroud)
我可以在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() !!}
Run Code Online (Sandbox Code Playgroud)
很容易.替换Report::create...为此.
$user = Auth::user();
$report = new Report($request->all());
$report->author()->associate($user);
$report->save();
Run Code Online (Sandbox Code Playgroud)
确保你use Auth;在顶部.
这使用该Auth对象获取当前用户,使用数据
构建一个新Report的而不保存,
告诉我们关联的报告作为模型,
使用作者信息保存报告.$request$userauthor