Laravel 5.1:调用未定义的方法 IlluminateDatabaseQueryBuilder::f


Laravel 5.1: Call to undefined method IlluminateDatabaseQueryBuilder::fill()

我正在尝试让这条线工作$user->profile()->fill($input['profile'])->save();

经过多次讨论和失败的尝试

我需要帮助填写一个雄辩的模型

也有守卫问题http://laravel.io/forum/01-06-2016-massassignmentexception-ignoring-fillable-guarded-is-set我用protected $guarded = ['id']; 克服了这一点

轮廓模型

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

用户模型

public function profile(){
        return $this->hasOne('App'Profile', 'user_id');
    }

控制器

public function update(Request $request, $id)
{
    $user = User::with('profile')->findOrFail($id);
    $input = $request->all();

    if(is_null($user->profile)){
        $profile = new Profile($input['profile']);
        $user->profile()->save($profile);
    alert()->warning('New profile creation attempt!');
    }else{
        // $user->profile()->fill($input['profile'])->save();
        $user->profile->title = $input['profile']['title'];
        $user->profile->facebook_username = $input['profile']['facebook_username'];
        $user->profile->meetup_user_id = $input['profile']['meetup_user_id'];
        $user->profile->save();
        // dump($input['profile']['title']);
        // dump($user->profile->title);
        //Unless it fails silently like before.
    alert()->success('Profile Saved!');
    }
    return redirect()->route('admin.users.edit', [$id]);
}

注意我是如何手动填充的,这显然并不理想。 这是我正在努力实现的结果

根据

我的理解,您想在一行中填充配置文件属性,你试过fill()方法吗?

在您的else部分或任何您想要的地方尝试这种方式,我希望这可能会对您有所帮助

$profile = new Profile;
$profile->fill($input['profile']);
$user->profile()->save($profile);