Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model
laravel-5
Solution
I think what you want is this:
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
class postController extends Controller
{
public function postCreatePost(Request $request){
// Validation
$post = new Post();
// here you set the body of the post like that
$post->body = $request->body;
// here you pass the $post object not as string
$request->user()->posts()->save($post);
return redirect()->route('dashboard');
}
}
You need to pass the `$post` object as an object to the `save` method. You was doing this: `$user->posts()->save('$post')` when you need to do this: `$user->posts()->save($post)`.
Hope it helps.
Problem
I am pretty new to Laravel and I am trying to add the post, create by a user into the database. But when I do so, following error comes: Argument 1 passed to Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() must be an instance of Illuminate\Database\Eloquent\Model, string given, called in C:\xampp\htdocs\lar\app\Http\Controllers\PostController.php on line 25 and defined User model: ``` <?php namespace App; use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Database\Eloquent\Model; class User extends Model implements Authenticatable { use \Illuminate\Auth\Authenticatable; public function posts() { return $this->hasMany('App\Post'); } } ``` Post Model: ``` <?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { public function user() { return $this->belongsTo('App\User') ; } } ``` PostController: ``` <?php namespace App\Http\Controllers; use App\Post; use Illuminate\Http\Request; class postController extends Controller { public function postCreatePost(Request $request){ // Validation $post = new Post(); $post->$request['body']; $request->user()->posts()->save('$post'); return redirect()->route('dashboard'); } } ``` Post Route: ``` Route::post('/createpost',[ 'uses' => 'PostController@postCreatePost', 'as'=>'post.create' ]); ``` Form action: ``` <form action="{{route('post.create')}}" method="post"> ``` Please tell me how to fix this.. How to fix this? Thank you in advance.. :)