php - 调用非对象的成员函数 fill()

标签 php laravel-4

尝试将信息添加到空的 profile 并重定向回来。

$user = User::whereUsername($username)->firstOrFail(); // Selects correct user

$input = Input::all(); // a dd($input) at this point confirms input present

$this->profileForm->validate($input); // Passes

$user->profile->fill($input)->save();

return Redirect::route('profile.edit', $user->username);

如果 $user->profilenull 那么这会给出错误:Call to a member function fill() on a non-object。我试图通过以下方式解决这个问题:

$user = User::whereUsername($username)->firstOrFail(); // Selects correct user

$input = Input::all(); // a dd($input) at this point confirms input present

$this->profileForm->validate($input); // Passes

if ($user->profile == null)
{
    $user->profile = new Profile;
}

$user->profile->fill($input)->save();

return Redirect::route('profile.edit', $user->username);

但在这种情况下,它会在不添加配置文件详细信息的情况下进行重定向(此时 $user->profile 仍然是 null)。

如果 $user->profile 已经有信息那么这个问题就不会发生并且代码可以正常工作。

最佳答案

你可以这样做:

if (count($user->profile))
{   
    $user->profile->fill($input)->save();
}
else
{
    $profile = Profile::create($input);

    $user->profile()->save($profile);
}

关于php - 调用非对象的成员函数 fill(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26034176/

相关文章:

php - 如何在 PHP(Laravel 5) 中为我的站点的所有传入连接保留单个类实例?

php - 文件夹 php mysql 中设置的 session

php - `?:` 是什么意思?

php - 相当于 PHP preg_split() 的 JavaScript

php - 需要通过 css 将颜色添加到 html 表格

php - Laravel 中的 Policy Authorize 与 Can Function 有什么区别?

php - 测试 Laravel Controller 时 View 中的 undefined variable

php - 这个 $_SERVER ['REQUEST_METHOD' ] === 'POST' 是做什么的?

angularjs - 在angular js中处理来自$resource的数据响应

php - 在 Laravel 4 中使用命名空间