Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.5 MassaSignmentException_Php_Laravel_Laravel 5.5 - Fatal编程技术网

Php Laravel 5.5 MassaSignmentException

Php Laravel 5.5 MassaSignmentException,php,laravel,laravel-5.5,Php,Laravel,Laravel 5.5,我正在关注Laravel从无到有的教程系列,我目前正在为您的文章系统创建一个评论系统。但是我有个问题,我不知道这个错误在说什么 错误: Illuminate\Database\Eloquent\MassAssignmentException body <?php namespace App; use Illuminate\Database\Eloquent\Model; class Comment extends Model { public function post()

我正在关注Laravel从无到有的教程系列,我目前正在为您的文章系统创建一个评论系统。但是我有个问题,我不知道这个错误在说什么

错误:

Illuminate\Database\Eloquent\MassAssignmentException
body
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}
<?php

namespace App;

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }

    public function addComment($body)
    {
        $this->comments()->create(compact('body'));
    }
}
Route::post('/posts/{post}/comments', 'CommentsController@store');
<?php

namespace App\Http\Controllers;

use App\Post;

class CommentsController extends Controller
{
    public function store(Post $post)
    {
        $post->addComment(request('body'));

        return back();
    }
}
评论模型:

Illuminate\Database\Eloquent\MassAssignmentException
body
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}
<?php

namespace App;

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }

    public function addComment($body)
    {
        $this->comments()->create(compact('body'));
    }
}
Route::post('/posts/{post}/comments', 'CommentsController@store');
<?php

namespace App\Http\Controllers;

use App\Post;

class CommentsController extends Controller
{
    public function store(Post $post)
    {
        $post->addComment(request('body'));

        return back();
    }
}
注释控制器:

Illuminate\Database\Eloquent\MassAssignmentException
body
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{
    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}
<?php

namespace App;

class Post extends Model
{
    public function comments()
    {
        return $this->hasMany(Comment::class);
    }

    public function addComment($body)
    {
        $this->comments()->create(compact('body'));
    }
}
Route::post('/posts/{post}/comments', 'CommentsController@store');
<?php

namespace App\Http\Controllers;

use App\Post;

class CommentsController extends Controller
{
    public function store(Post $post)
    {
        $post->addComment(request('body'));

        return back();
    }
}

批量分配是指当您向模型创建发送一个数组时,基本上是一次性在模型上设置一组字段,而不是一个接一个,就像您在这里所做的那样:

public function addComment($body)
{
    $this->comments()->create(compact('body'));
}
您需要将要填充的字段添加到
Comments.php
model:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Comment extends Model
{

    protected $fillable = ['body'];

    public function post()
    {
        return $this->belongsTo(Post::class);
    }
}
此错误的解释
这是Laravel的一项安全功能。它旨在保护您在使用体量指定时不受形状操纵

例如,在注册表单上:当您的数据库中有一个
is_admin
列时,用户只需操纵您的表单即可将服务器上的
is_admin
设置为
true
,从而将其设置在数据库中。此安全功能通过使用白名单定义安全字段来防止这种情况


如何解决这个问题 您需要在模型上设置
$filleble
属性。它的值必须是一个数组,其中包含可安全批量分配的所有字段(如用户名、电子邮件地址等)


Add
protected$filleble=['db_column1','db_column']
在您的两个模型中可能存在重复项。这成功了,谢谢您给我详细的解释。