BelongsToMany.php中的ErrorException(非法偏移类型)

时间:2016-07-29 07:25:15

标签: php laravel model-view-controller laravel-5.2

我试图将 belongsTo 插入我的数据透视表。我有一个评论文档表,其中包含一对多关系,评论用户表格多对多的关系。数据透视表是 comment_user

我可以插入 belongsTo 关系,但我遇到问题,我需要将评论id与用户id一起插入(当前用户) 。请参阅下面的我的关系。

数据库图表

DB

模型

注释

class Comment extends Model
{
    protected $tables = 'comments';

    protected $fillable =
    [
        'comment',
        'document_id',
    ];

    public function users()
    {
        return $this->belongsToMany('App\Models\User', 'comment_user', 'comment_id', 'user_id');
    }

    public function documents()
    {
        return $this->belongsTo('App\Models\Document');
    }
}

用户:

class User extends Model implements AuthenticatableContract
{
    use Authenticatable;

    protected $table = 'users';

    protected $fillable = [
        'first_name',
        'last_name',
        'middle_name',
        'email',
        'username',
        'address',
        'password',
        'role_permission_id',
    ];

 public function comments()
 {
    return $this->belongsToMany('App\Models\Comment', 'comment_user', 'user_id', 'comment_id');
 }

}

控制器:

class CommentController extends Controller
{

    public function postComments(Request $request, Document $id)
    {

        $this->validate($request,
        [
            'comment' => 'required',
        ]);


        $commentObject = new Comment();


        $user = Auth::user();

        $commentObject->comment = $request->comment;

        $id->comments()->save($commentObject);

        $commentObject->users()->sync(['comment_id' => $commentObject, 'user_id' => $user->id],false);

        return redirect()->back();
    }
}

问题

我只想插入模型评论的id以及当前用户。我试过了,但它说。

$commentObject->users()->sync(['user_id' => $user->id],false);
  

SQLSTATE [23000]:完整性约束违规:1452无法添加或更新子行:外键约束失败(webdevcomment_user,CONSTRAINT comment_user_sender_id_foreign FOREIGN KEY({{ 1}})REFERENCES sender_idusers)ON DELETE CASCADE)(SQL:插入idcomment_usercomment_id)值(36,11) )

正如您在此处所见, 36 是Comment的当前ID, 11 是登录用户的当前ID。任何帮助我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

执行此操作时,您尝试将null放入具有外键约束的sender_id中。我假设你还应该像这样添加一个发件人ID:

$commentObject->users()->sync(['user_id' => $user->id, 'sender_id' => $whatever],false);