2013-07-30 19 views
22

bilen var mı gidin:laravel: birinde bir model ve ilgili modelleri nasıl güncelleneceğini, Etkili o folowing yapmak possitble ise

en bir modeli olarak adlandırılan kullanıcı ve model Bestfriend calledd var diyelim. Kullanıcı ve en iyi arkadaş arasındaki ilişki 1: 1'dir.

Bu gibi durumlarda böyle bir şey yapabilmeyi, şehrimi ve arkadaşımın şehrini aynı anda değiştirmeyi isterim.

$me = User::find(1); 

$me->update(array(
'city' => 'amsterdam', 
'bestfriend.city' => 'amsterdam' 
)); 

Böylece temelde Eloquent dizi tuşu 'bestfriend.city' dayalı ilişkiyi anlayabilecek kadar akıllı olup olmadığını bilmek istiyorum. Herhangi bir yardım için şimdiden

teşekkürler!

Güncelleme:

başkası aynı şeyi :)

modelinde arıyorsa burada da göndermeden laravel forumlarda ama im çözüm Bulunan Eklemek

// In your model... 
public function setBestFriendArrayAttribute($values) 
{ 
    $this->bestfriend->update($values); 
} 

Ve sonra bunları

$me->update(array(
    'city' => 'amsterdam', 
    'BestFriendArray' => array(
     'city' => 'amsterdam' 
    ) 
)); 
gibi diyebilirsin

Bir çekicilik gibi çalışır!

+3

Güncellemenizi, sorunuza bir yanıt olarak gönderebilir ve güncelleme olarak kabul edebilirsiniz. – dimo414

cevap

4

Eloquent oldukça zekidir ama bunu yapabileceğine inanmıyorum. Kullanıcı ve BestFriend'i bağımsız olarak güncellemeniz gerekir. Ama bunu yaptıktan sonra Eloquent'in ikisini birleştirmek için yöntemleri var.

$me = User::find(1); 
$bff= BestFriend::find(1); 

$me->city = 'amsterdam'; 
$bff->city = 'amsterdam'; 

$me->bestfriend()->associate($bff); 

Bu Kullanıcı modelini varsayarak elbette benzeyen bir işlev ... Eğer model üzerinde ayarlayın gerekmez

public function bestfriend() 
{ 
    return $this->hasOne('BestFriend'); 
} 
+1

Cevabınız için teşekkürler :) Laravel forumlarında bir çözüm buldum ve orijinal mesajıma yolladım, eğer diğerleri aynı şeyi ararsa hemen cevabı alacaklar :) – MvdP

5

sahiptir. Bunu kontrol cihazınızda böyle yapabilirsin.

$me = User::find(1)->bestFriend()->update(array(
'city' => 'amsterdam', 
'bestfriend.city' => 'amsterdam' 
)); 

Sadece güncelleştirmenizi biraz değiştirdim.

İlgili konular