簡體   English   中英

在Laravel 5.3中更新屬於關系

[英]Updating BelongsTo Relationships in Laravel 5.3

大家好,我的表格狀態iduser_idparent_idbody
現在狀態表與用戶的關系如下:

狀態模型

    public function user() {
        return $this->belongsTo('App\User', 'user_id');
    }

    public function scopeNotReply($query) {
        return $query->whereNull('parent_id');
    }

    public function replies() {
        return $this->hasMany('App\Status', 'parent_id');
    }

用戶模型

public function statuses() {
    return $this->hasMany('App\Status', 'user_id');
}

但是,不幸的是,當我想回復狀態並將其保存到具有相同表statuses數據庫中時,我無法訪問user_id 我使用associate方法,並且StatusController是這樣的:

public function postReply(Request $request, $statusId){
    $this->validate($request, [
        "reply-{$statusId}" => 'required|max:1000',
    ]);

    $status = Status::notReply()->find($statusId)->first();

    $reply = Status::create([
        'body'  => $request->input("reply-{$statusId}"),
    ])->user()->associate(Auth::user());

    $status->replies()->save($reply);

    return redirect()->back();
}

每次我嘗試回復狀態時,都會收到此錯誤消息SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value

有人可以幫助我解決這個問題嗎?

謝謝

出現此錯誤的原因是因為您是在與user_id關聯之前創建Status的。

解決此問題的一種方法是將user_id邏輯移至create數組內,即:

Status::create([
    'body'    => $request->input("reply-{$statusId}"),
    'user_id' => Auth:user()->id
]);

希望這可以幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM