我想知道如何将表单字段映射到雄辩的模型。事实是表单输入字段的名称不同于雄辩的模型。
这就是我的
模型
class Message extends Model
{
protected $fillable = [
'name', 'email', 'subject_id',
];
}
表格
<form action="{{ action('MessageController@store') }}" method="post">
<input id="name" name="name" type="text">
<input id="email" name="email" type="text">
<select id="subject" name="subject">
@foreach ($subjects as $subject)
<option value="{{ $subject->id }}">{{ $subject->title}}</option>
@endforeach
</select>
</form>
控制器
public function store(Request $request)
{
$message = $this->validate(request(), [
'name' => 'required',
'email' => 'required',
'subject' => 'required',
]);
Message::create($message);
}
请注意,表单选择字段名称为subject
,邮件模型字段为subject_id
。
是否可以在Message模型中映射这两个字段? 我想在控制器中有可能像
那样Message::create([
'name' => $request->input('name');
'email' => $request->input('email');
'subject_id' => $request->input('subject');
]);
但那不是我想要的。
我不希望有一些代码改进或建议,因为我是完整的Laravel noob:)
答案 0 :(得分:0)
您可以在Message模型上添加mutator。
public function setSubjectAttribute($value) {
$this->attributes['subject_id'] = $value;
}
这基本上告诉了eloquent模型上有subject
属性,但是你需要修改subject_id