2016-10-20 1 views
1

Ich bin ziemlich neu in Laravel und ich versuche den Beitrag hinzuzufügen, erstellen von ein Benutzer in die Datenbank. Aber wenn ich so tun, Schleppfehler kommt:Das Argument 1 wurde an Illuminate Database Eloquent Relations HasOneOrMany :: save() übergeben und muss eine Instanz von Illuminate Database Eloquent sein Modell

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-Modell:

<?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'); 
} 
} 

Beitrag Modell:

<?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'); 
} 
} 

Beitrag Route:

Route::post('/createpost',[ 
    'uses' => '[email protected]', 
    'as'=>'post.create' 
    ]); 

Formular Aktion:

<form action="{{route('post.create')}}" method="post"> 

Bitte sagen Sie mir, wie dieses ot zu beheben .. Wie dieses Problem beheben? Vielen Dank im Voraus .. :)

Antwort

2

Ich denke, was Sie wollen, ist dies:

<?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'); 
} 
} 

Sie benötigen das $post Objekt als ein Objekt zur save Methode zu übergeben. Sie taten das: $user->posts()->save('$post'), wenn Sie dies tun müssen: $user->posts()->save($post).

Ich hoffe, es hilft.

+0

Vielen Dank Ich habe es versucht, aber dann kam ein weiterer Fehler: QueryException in Connection.php Zeile 761: SQLSTATE [HY000]: Allgemeiner Fehler: 1364 Feld 'Körper' hat keinen Standardwert (SQL: Einfügen in ' posts '(' user_id', 'updated_at',' created_at') Werte (8, 2016-10-20 10:04:19, 2016-10-20 10:04:19)). –

+0

Ich habe den Standardwert hinzugefügt: $ table-> text ('body') -> default (""); aber es hat nicht funktioniert. Ich verstehe nicht, was ich falsch gemacht habe ... –

+0

Oh, jetzt bekomme ich es ... aber update_at und created_at werden automatisch von timestamps() erstellt, warum braucht es dann einen Standardwert? und wie man es bereitstellt? –

Verwandte Themen