无法想出这个。我已经提到了文档,但我没有得到预期的结果。 发生的事情是我的用户模型保存正常,所有数据都存在于我的用户表中,但是头像表仍然是空的。没有错误。
用户模型
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();
推送后,头像表仍为空。 我可能不是这样做我确定的正确方法。有什么想法吗?
答案 0 :(得分:1)
假设$gravatar
已设置且您正在遵循Laravel命名约定,则您需要首先save()
用户模型,然后分别在头像关系上save()
,传入阿凡达模型,所以你有id
用户。
传递给save()
的任何内容都必须是模型。假设gravatar
是avatars
表中的字段,您需要实例化Avatar
,设置gravatar
属性,并将Avatar
的实例保存到avatars
关系。
试试这个:
$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);