尝试在Laravel中删除行时出现错误“调用未定义的方法stdClass :: delete()”

lie*_*oes 2 php methods laravel

我从数据库和本地存储中删除图像的方法。

public function destroy($id) {
        $image = DB::table('images')->where('id', '=', $id)->first();
        //print_r($image);
        //return 'end';
        File::delete(public_path() . '/images/gallery/thumb-' . $image->path);
        File::delete(public_path() . '/images/gallery/' . $image->path);
        $image->delete();
        return Redirect::back()
                        ->with('form_success', 1)
                        ->with('form_message', 'Image successfully deleted!');
    }
Run Code Online (Sandbox Code Playgroud)

如果我尝试返回的值$image我得到:

stdClass Object ( [id] => 49 [site_id] => 1 [page_id] => [location] => gallery [alt] => [path] => 60e52a2755ffe8923d5ac1232f5d9154.jpg ) 
Run Code Online (Sandbox Code Playgroud)

那么我的代码有什么问题呢?现在我的Laravel版本是4.2.1,但是我尝试将其降级到4.1.17,但是没有任何变化。

use*_*496 5

问题是一旦您调用first(),就会执行查询并返回结果。您必须在致电delete()之前致电first()

DB::table('images')->where('id', $id)->delete();

由于您使用的是查询生成器,因此您将返回stdClass已看到的对象(没有删除方法),而不是使用Eloquent时通常会得到的模型。