laravel-5 - 传递给 Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() 的参数 1 必须是 Illuminate\Database\Eloquent\Model 的实例

标签 laravel-5

我对 Laravel 还很陌生,我正在尝试将用户创建的帖子添加到数据库中。但是当我这样做时,出现以下错误:

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

用户模型:

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

后 Controller :

<?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' => 'PostController@postCreatePost',
    'as'=>'post.create'
]);

表单操作:

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

请告诉我如何解决这个问题..如何解决这个问题? 提前谢谢你..:)

最佳答案

我想你想要的是这样的:

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

您需要将 $post 对象作为对象传递给 save 方法。当您需要执行此操作时,您正在执行以下操作:$user->posts()->save('$post'):$user->posts()->save($发布)

希望有帮助。

关于laravel-5 - 传递给 Illuminate\Database\Eloquent\Relations\HasOneOrMany::save() 的参数 1 必须是 Illuminate\Database\Eloquent\Model 的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40150958/

相关文章:

mysql - 如何使用带有预加载的 where 条件从第二个模型检索数据

php - 如何在 Laravel 5.2 中将 taskId 插入到文件表中

php - 获取 hasMany 关系上的特定字段

php - Laravel - 不允许对图像设置为 Nullable 的请求验证并给出错误原因?

php - laravel 如何从另一个数据库加入一个数据库

laravel - 供应商问题 :Publish in laravel 5

php - 我如何找到哪个 `guard` 在 Laravel 中发出当前请求?

mysql - Laravel 5 查询生成器 - 将 "ON DUPLICATE KEY UPDATE"附加到 insert() 调用

php - 是否可以在 Laravel 迁移中使用 sql 查询

php - Laravel5 - 自定义验证器 - 未定义的 setPresenceVerifier()