Laravel 5,调用未定义的方法stdClass :: update()

时间:2016-02-02 06:36:27

标签: php laravel laravel-5 stdclass laravel-query-builder

我正在使用Laravel 5,我有一个简单的编辑页面,必须更新数据库。当我尝试运行它时,我收到了错误

  

UserController.php第47行中的FatalErrorException:调用未定义的方法stdClass :: update()

控制器:

public function userUpdate()
{
    if(Input::get('send')) {
        $arr = [
            'email' => Input::get('email')
        ];
        DB::table(Config::get('users_table'))->find(Input::get('userId'))->update(['is_active' => TRUE]);
        return redirect()->route('users');
    }           
}

数据库架构:

id bigserial NOT NULL,
username text,
email text,
permission integer NOT NULL,
is_staff boolean NOT NULL DEFAULT false,
is_active boolean NOT NULL DEFAULT false,
updated_at timestamp without time zone,
created_at timestamp without time zone,
remember_token text

路线:

Route::post('/user/update', [
    'as' => 'userUpdate', 'uses' => 'UserController@userUpdate'
]);

查看:

{!! Form::open(['route' => 'userUpdate', 'method' => 'post']) !!}

<label>Username</label>
{!! Form::text('username', $user->username, ['class' => 'form-control readonly', 'readonly' => '']) !!}

<label>Email</label>
{!! Form::text('email', $user->email, ['class' => 'form-control']) !!}

<label>Permission</label>
{!! Form::text('permission', $user->permission, ['class' => 'form-control']) !!}

{!! Form::hidden('userId', $user->id) !!}
{!! Form::submit('Update User', ['class' => 'btn green', 'name' => 'send']) !!}
{!! Form::submit('Cancel', ['class' => 'btn black', 'name' => 'clear']) !!}
{!! Form::close() !!}

我使用这个结构,特别是这种类型在我的控制器中的另一个函数中使用Input和Form类来制作行列表或者得到一个单独的表行,一切都很好,但是在更新数据库时我得到了{{1错误。有什么东西我不见了吗?

2 个答案:

答案 0 :(得分:3)

你不能在查询构建器中使用find方法,你需要使用where

public function userUpdate()
{
if(Input::get('send')) {
    $arr = [
        'email' => Input::get('email')
    ];
    DB::table(Config::get('users_table'))->where('id',Input::get('userId'))->update(['is_active' => TRUE]);
    return redirect()->route('users');
}           
}

答案 1 :(得分:1)

就我而言,我不得不从

first() to limit(1)

即。

        $blog = DB::table('blogs')
        ->where('blogs.id', $id)
        ->first();

        $blog = DB::table('blogs')
        ->where('blogs.id', $id)
        ->limit(1);