douda5706
douda5706
2017-04-15 15:21

将请求保存到数据库

  • laravel
  • php

I want to save a request from my laravel 5.2 app a form into my database:

When I submit the request with the word testdy I get an exception:

FatalThrowableError in KeywordController.php line 49: Class 'App\Keyword' not found

Line 49 in my controller is when I want to built my model: $keyword = new Keyword($request);

Below you can find the code of the KeywordController:

<?php

namespace App\Http\Controllers;

use App\Keyword;
use App\Http\Requests\KeywordRequest;
use Response;
use Sentinel;

class KeywordController extends JoshController
{
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        // Grab all the Keywords
     //   $Keywords = Keyword::all();
        // Show the page
        return View('admin.keyword.index'); //, compact('Keywords'));
    }

    public function create()
    {
        // $Keywordcategory = KeywordCategory::lists('title', 'id');
        return view('admin.keyword.create'); //, compact('Keywordcategory'));
    }

    public function store(KeywordRequest $request)
    {
        //dd($request);
        $keyword = new Keyword($request); //line 49 of my controller

        $keyword->user_id = Sentinel::getUser()->id;
        $keyword->save();

        if ($keyword->id) {
            return redirect('admin/keyword')->with('success', trans('Keyword/message.success.create'));
        } else {
            return Redirect::route('admin/keyword')->withInput()->with('error', trans('Keyword/message.error.create'));
        }
    }

    public function show(Keyword $keyword)
    {
        $comments = Keyword::all();

        return view('admin.keyword.show', compact('Keyword', 'comments', 'tags'));
    }

    public function edit(Keyword $keyword)
    {
        $Keywordcategory = KeywordCategory::lists('title', 'id');

        return view('admin.keyword.edit', compact('Keyword', 'Keywordcategory'));
    }

    public function update(KeywordRequest $request, Keyword $Keyword)
    {
        if ($request->hasFile('image')) {
            $file = $request->file('image');
            $filename = $file->getClientOriginalName();
            $extension = $file->getClientOriginalExtension() ?: 'png';
            $folderName = '/uploads/Keyword/';
            $picture = str_random(10).'.'.$extension;
            $Keyword->image = $picture;
        }

        if ($request->hasFile('image')) {
            $destinationPath = public_path().$folderName;
            $request->file('image')->move($destinationPath, $picture);
        }
        $Keyword->retag($request['tags']);

        if ($Keyword->update($request->except('image', '_method', 'tags'))) {
            return redirect('admin/keyword')->with('success', trans('Keyword/message.success.update'));
        } else {
            return Redirect::route('admin/keyword')->withInput()->with('error', trans('Keyword/message.error.update'));
        }
    }

    public function getModalDelete(Keyword $Keyword)
    {
        $model = 'Keyword';
        $confirm_route = $error = null;
        try {
            $confirm_route = route('delete/Keyword', ['id' => $Keyword->id]);

            return View('admin/layouts/modal_confirmation', compact('error', 'model', 'confirm_route'));
        } catch (GroupNotFoundException $e) {
            $error = trans('Keyword/message.error.delete', compact('id'));

            return View('admin/layouts/modal_confirmation', compact('error', 'model', 'confirm_route'));
        }
    }

    public function destroy(Keyword $Keyword)
    {
        if ($Keyword->delete()) {
            return redirect('admin/keyword')->with('success', trans('Keyword/message.success.delete'));
        } else {
            return Redirect::route('admin/keyword')->withInput()->with('error', trans('Keyword/message.error.delete'));
        }
    }
}

My request, see the dd($request); looks like the following:

KeywordRequest {#323 ▼
  #container: Application {#3 ▶}
  #redirector: Redirector {#330 ▼
    #generator: UrlGenerator {#114 ▼
      #routes: RouteCollection {#26 ▶}
      #request: Request {#40 ▶}
      #forcedRoot: null
      #forceSchema: null
      #cachedRoot: null
      #cachedSchema: null
      #rootNamespace: "App\Http\Controllers"
      #sessionResolver: Closure {#115 ▶}
      #dontEncode: array:14 [▶]
    }
    #session: Store {#264 ▼
      #id: "6db1ef2a6ede612fa681e299c7731866afce7b34"
      #name: "laravel_session"
      #attributes: array:4 [▼
        "_token" => "HbguKauEYhU00n9YcCvw8lloKWbd51I6FOhHRORB"
        "_previous" => array:1 [▶]
        "flash" => array:2 [▶]
        "cartalyst_sentinel" => "5jqJ2R6MTFm4DkOefwhknOD3WY4Jaa0T"
      ]
      #bags: []
      #metaBag: MetadataBag {#255 ▼
        -name: "__metadata"
        -storageKey: "_sf2_meta"
        #meta: &120 array:3 [▼
          "u" => 1492269234
          "c" => 1492243279
          "l" => "0"
        ]
        -lastUsed: 1492269215
        -updateThreshold: 0
      }
      #bagData: array:1 [▶]
      #handler: FileSessionHandler {#265 ▼
        #files: Filesystem {#117}
        #path: "/home/ubuntu/workspace/storage/framework/sessions"
        #minutes: 120
      }
      #started: true
    }
  }
  #redirect: null
  #redirectRoute: null
  #redirectAction: null
  #errorBag: "default"
  #dontFlash: array:2 [▼
    0 => "password"
    1 => "password_confirmation"
  ]
  #json: null
  #convertedFiles: []
  #userResolver: Closure {#232 ▼
    class: "Cartalyst\Sentinel\Laravel\SentinelServiceProvider"
    this: SentinelServiceProvider {#77 …}
    use: {▼
      $app: Application {#3}
    }
    file: "/home/ubuntu/workspace/vendor/cartalyst/sentinel/src/Laravel/SentinelServiceProvider.php"
    line: "425 to 427"
  }
  #routeResolver: Closure {#233 ▼
    class: "Illuminate\Routing\Router"
    this: Router {#24 …}
    use: {▼
      $route: Route {#149 ▼
        #uri: "admin/keyword/create"
        #methods: array:1 [▶]
        #action: array:6 [▶]
        #defaults: []
        #wheres: array:1 [▶]
        #parameters: []
        #parameterNames: []
        #compiled: CompiledRoute {#239 ▶}
        #router: Router {#24 …}
        #container: Application {#3}
      }
    }
    file: "/home/ubuntu/workspace/vendor/laravel/framework/src/Illuminate/Routing/Router.php"
    line: "693 to 695"
  }
  +attributes: ParameterBag {#325 ▼
    #parameters: []
  }
  +request: ParameterBag {#322 ▼
    #parameters: array:2 [▼
      "_token" => "HbguKauEYhU00n9YcCvw8lloKWbd51I6FOhHRORB"
      "keyword" => "tesdy"
    ]
  }
  +query: ParameterBag {#324 ▼
    #parameters: []
  }
  +server: ServerBag {#328 ▼
    #parameters: array:42 [▶]
  }
  +files: FileBag {#327 ▼
    #parameters: []
  }
  +cookies: ParameterBag {#326 ▼
    #parameters: array:2 [▼
      "XSRF-TOKEN" => "HbguKauEYhU00n9YcCvw8lloKWbd51I6FOhHRORB"
      "laravel_session" => "6db1ef2a6ede612fa681e299c7731866afce7b34"
    ]
  }
  +headers: HeaderBag {#329 ▼
    #headers: array:16 [▼
      "host" => array:1 [▶]
      "content-length" => array:1 [▶]
      "cache-control" => array:1 [▶]
      "origin" => array:1 [▶]
      "upgrade-insecure-requests" => array:1 [▶]
      "user-agent" => array:1 [▶]
      "content-type" => array:1 [▶]
      "accept" => array:1 [▶]
      "referer" => array:1 [▶]
      "accept-encoding" => array:1 [▶]
      "accept-language" => array:1 [▶]
      "cookie" => array:1 [▶]
      "x-forwarded-proto" => array:1 [▶]
      "x-forwarded-port" => array:1 [▶]
      "x-forwarded-for" => array:1 [▶]
      "connection" => array:1 [▶]
    ]
    #cacheControl: array:1 [▼
      "max-age" => "0"
    ]
  }
  #content: ""
  #languages: null
  #charsets: null
  #encodings: null
  #acceptableContentTypes: null
  #pathInfo: null
  #requestUri: null
  #baseUrl: null
  #basePath: null
  #method: "POST"
  #format: null
  #session: Store {#264 ▶}
  #locale: null
  #defaultLocale: "en"
}

The "keyword" => "tesdy" parameter has the same name in the database.

Any suggestions why $keyword = new Keyword($request); throws an exception?

I appreciate your replies!

Update

My app/Keyword.php file looks like the following:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Keywords extends Model
{
    protected $table = 'keywords';

    protected $guarded = ['id'];
}
  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答

为你推荐

换一换