我有 2 个模型,联系人和电子邮件。任何联系人都可能有多个电子邮件地址,因此我在模型中创建了一对多关系:
class Contact extends Eloquent {
protected $guarded = array();
public static $rules = array(
'first_name' => 'required',
'last_name' => 'required'
);
public function emails() {
return $this->hasMany('Email');
}
}
class Email extends Eloquent {
public function emails() {
return $this->belongsTo('Contact');
}
}
希望到目前为止我在正确的轨道上......
我已经为 Contact 模型使用了 Jeff Way 的脚手架,所以我在控制器中有这个更新方法:
public function update($id)
{
$input = array_except(Input::all(), '_method');
$validation = Validator::make($input, Contact::$rules);
if ($validation->passes())
{
$contact = $this->contact->find($id);
$contact->update($input);
return Redirect::route('contacts.show', $id);
}
return Redirect::route('contacts.edit', $id)
->withInput()
->withErrors($validation)
->with('message', 'There were validation errors.');
}
此外,我修改了编辑视图以显示与联系人关联的所有电子邮件,然后添加一个额外的空白输入以添加新的:
@foreach($emails as $key => $email)
<li>
{{ Form::label('email', 'Email '.$key.':') }}
{{ Form::text('email'.$email->id, $email->email) }}
</li>
@if(count($emails)==$key+1)
<li>
{{ Form::label('email', 'Email '.($key+1).':') }}
{{ Form::text('email'.($email->id+1)) }}
</li>
@endif
@endforeach
现在,我不知道如何修改更新方法以更新电子邮件(如果已修改)并添加新电子邮件(如果已输入)。如果有人能指出我正确的方向,我将不胜感激 - 谢谢!