Metalhead
Metalhead

Reputation: 21

"Class 'App\Models\Post' not found"

I'm trying to let my users made posts in my social media website. I already have a 'App\Models\Post'. How do I solve it??

Also the error appears when I try to submit the post, and the trouble is in the line that says: "$post = new Post();"

Ok, so here says that it looks like my post is mostly code, so I'll write no sense things so this pritty little thing go off. I'm not a native english speaker, so if you find a spelling or grammatical error please correct me :)

Here is the code of my Controller:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post ;
use App\User;

class PostController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
      return view('makePost');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */



    /**
     * Store a newly created resource in storage.
     *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function makePost(Request $request)
{
  $this->validate($request, array(
    'post' => 'required',
    'title' => 'nullable|max:50',
    'label' => 'nullable|max:25',
  ));

  $post = new Post();

  $post->post = $request->post;
  $post->title = $request->title;
  $post->label = $request->label;
  $post->save();

  return redirect()->route('index');
}

/**
 * Display the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function show($id)
{
    //
}

/**
 * Show the form for editing the specified resource.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function edit($id)
{
    //
}

/**
 * Update the specified resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */

public function update(Request $request, $id)
{
    //
}

/**
 * Remove the specified resource from storage.
 *
 * @param  int  $id
 * @return \Illuminate\Http\Response
 */
public function destroy($id)
{
    //
}

And here is my Post Model:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    public function Users() {
      return $this->belongsTo(User::class);
    }
}

Upvotes: 1

Views: 6372

Answers (2)

patsko
patsko

Reputation: 31

You defined the namespace in your Model wrong, if its in the Model directory change it to:

namespace App\Models;

If not you can always change your controller to:

use App\Post;

Upvotes: 3

Mohcin Bounouara
Mohcin Bounouara

Reputation: 623

Try to use: use App\Post; Instead of use App\Models\Post ;

Upvotes: 1

Related Questions