1
私はかなり新しいlaravelです。ユーザーをデータベースに追加します。私はそうするときには、次のエラーが来る:引数1はIlluminate Database Eloquent Relations HasOneOrMany :: save()に渡されなければなりませんIlluminate Database Eloquent Model
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モデル:
<?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');
}
}
ポストモデル:
<?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');
}
}
ポストルート:
Route::post('/createpost',[
'uses' => '[email protected]',
'as'=>'post.create'
]);
フォームアクション:
<form action="{{route('post.create')}}" method="post">
この問題を解決するためにどのように..この問題を解決otの方法を教えてください?
<?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');
}
}
あなたはsave
メソッドにオブジェクトとして$post
オブジェクトを渡す必要があります: は事前にありがとうございます。.. :)
ありがとう、私は試してみましたが、別のエラーが来ました:Connection.phpの行の761: SQLSTATE [HY000]:一般的なエラー:1364フィールド 'body'はデフォルト値を持っていません(SQL: posts'( 'user_id'、' updated_at'、 'created_at')の値(8,2016-10-20 10:04:19,2016-10-20 10:04:19))を返します。 –
私はデフォルト値を追加しました:$ table-> text( 'body') - > default( "");しかし、それは動作しませんでした。 私は間違ったことを理解していません... –
ああ、今すぐ取得しますが、updated_atとcreated_atはtimestamps()によって自動的に作成されますが、なぜデフォルト値が必要ですか?どのように提供するのですか? –