laravel-5.7: data is not saving into database, Object not found

天大地大妈咪最大 提交于 2020-02-06 19:06:31

问题


I'm trying to save data into db but its not saving and says that object not found, can anyone suggest me solution, i am following this tutorial: https://laracasts.com/series/laravel-from-scratch-2018/episodes/10

controller:

public function index()
{
    $projects = Project::all();

    return view('projects.index', compact('projects'));
}

public function create()
{
    return view('projects.create');
}

public function store()
{
    $project = new Project();
    $project->title = request('title');
    $project->description = request('description');
    $project->save();

    return redirect('/projects');
}

routes:

Route::get('/projects','ProjectsController@index');
Route::post('/projects','ProjectsController@store');
Route::get('/projects/create','ProjectsController@create');

create.blade.php:

<form method="POST" action="/projects">
    {{ csrf_field() }}
    <div>
        <input type="text" name="title" placeholder="Project title">
    </div>
    <div>
        <textarea name="description" placeholder="Project description"></textarea>
    </div>
    <div>
        <button type="submit">Create Project</button>
    </div>
</form>

index.blade.php:

@foreach($projects as $project)
    <li>{{ $project->title }}</li>
@endforeach

回答1:


The Laravel code you've posted is correct under a properly configured website. The error from your comments:

Object not found! The requested URL was not found on this server. The link on the referring page seems to be wrong or outdated. Please inform the author of that page about the error. If you think this is a server error, please contact the webmaster. Error 404 localhost Apache/2.4.33 (Win32) OpenSSL/1.1.0h PHP/7.2.7

is an Apache error page, which means it's not requesting a page from your laravel project at all. The data is probably saving in your database, but then you redirect away to a page that is outside your project, and Apache can't find it.

Your website is located at http://localhost/laravel/public, which means you need to access the projects page at http://localhost/laravel/public/projects. However, redirect('/projects') gives you an absolute path instead of a relative path, sending you to http://localhost/projects, which does not exist.

Solutions

Since this is a local development project, I'm going to skip the issues with the improper Apache configuration and focus on other ways to avoid the error.

Option 1

Use a named route:

Route::get('/projects','ProjectsController@index')->name('projects.index');

and use the name of the route for the redirect:

return redirect()->route('projects.index');

This should generate correct urls within your project.

Option 2

Use serve for development instead of Apache.

Open a terminal in your Laravel project directory and run this command:

php artisan serve

This will start PHP's built-in webserver at http://localhost:8000, skipping Apache entirely. During development this is perfectly fine.




回答2:


You have missed out passing request parameter in the controller store()

public function store(Request $request)
{
    $project = new Project();
    $project->title = $request->title;
    $project->description = $request->description;
    $project->save();
    return redirect('/projects');
}

And also don't forget to include use Illuminate\Http\Request; above(outside) controller class.



来源:https://stackoverflow.com/questions/55090531/laravel-5-7-data-is-not-saving-into-database-object-not-found

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!