2014-09-06 97 views
0

無法找出這一個。我提到了文檔,但我沒有得到預期的結果。 發生什麼事是我的用戶模型保存好了,所有的數據都保存在我的用戶表中,但是頭像表仍然是空的。沒有錯誤被拋出。爲什麼我的Laravel模型關係不能保存?

用戶模式

class User extends Eloquent implements UserInterface, RemindableInterface { 

    use UserTrait, RemindableTrait; 
    public $timestamps = true; 

    public function topics() 
    { 
     return $this->hasMany('Topic'); 
    } 

    public function posts() 
    { 
     return $this->hasMany('Post'); 
    } 

    public function avatars() 
    { 
     return $this->hasMany('Avatar'); 
    } 

} 

,化身模型

class Avatar extends Eloquent 
{ 
    public $timestamps = true; 

    public function user() 
    { 
     return $this->belongsTo('User'); 
    } 

} 

最後,代碼在我的控制器中的片段:

$user = new User; 
$user -> email = $newEmail; 
$user -> name = $newName; 
$user -> username = $newUsername; 
$user -> password = Hash::make($newPassword); 
$user -> avatars -> gravatar = $gravatar; 
$user -> push(); 

推送後頭像表仍然爲空。 我可能沒有按照我確定的方式來做這件事。有什麼想法嗎?

回答

1

假設$gravatar設置和您關注Laravel命名約定,你需要save()用戶模型,然後再save()上分別化身關係,傳遞阿凡達模型,讓你有用戶的id

任何傳遞給save()的東西都必須是模型。假設gravatar是您的avatars表中的一個字段,您需要實例化Avatar,設置gravatar屬性,並通過avatars關係保存Avatar的實例。

試試這個:

$avatar = new Avatar; 
$avatar -> gravatar = 'gravatar.com/avatar/'.md5($newEmail); 

$user = new User; 
$user -> email = $newEmail; 
$user -> name = $newName; 
$user -> username = $newUsername; 
$user -> password = Hash::make($newPassword); 

$user -> save(); 
$user -> avatars() -> save($avatar); 
+1

'()'丟失在那裏。您無法在集合上保存任何內容。 – 2014-09-06 15:01:17

+0

哎呀,你是對的。添加... – 2014-09-06 15:05:10

+0

嗯,給出了一個錯誤: 參數1傳遞給Illuminate \ Database \ Eloquent \ Relations \ HasOneOrMany :: save()必須是Illuminate \ Database \ Eloquent \ Model的一個實例,給出的字符串。 $ gravatar是一個url字符串: $ gravatar ='http://www.gravatar.com/avatar/'.md5($newEmail); – 2014-09-06 15:45:14

相關問題