У меня есть 2 модели, контакты и электронная почта. Любой контакт может иметь несколько адресов электронной почты, поэтому я создал отношения один-ко-многим в моделях:Использование laravel, как мне создать представление, которое обновит отношения «один ко многим»?
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');
}
}
Надеюсь, я на правильном пути, до сих пор ...
Я уже использовали строительные леса Джеффа 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
Теперь я понятия не имею, как изменить способ обновления, чтобы обновить электронные письма (если они были изменены) и добавить новый (если введено). Я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении - спасибо!
Вы можете использовать 'толчок()' метод для сохранения модели и отношений [ссылка] (http://laravel.com/docs/ eloquent # insert-update-delete) –
Спасибо, это может быть в правильном направлении, я не уверен - но мне определенно нужна дополнительная помощь. Как мне обновить соответствующие строки в таблице электронной почты и добавить один, если он еще не существует? – PollenBrands