راکت
حل شده

خطای General error Field parent id

4 پاسخ

درود دوستان...
یه سیستم نظر دهی لاراول ایجاد کردم و دیتابیس و مدل ها و هم چون کنترلرها ایجاد کردم و در آخر این خطا رو به رو شدم...
توی سایت های خارجی این خطا جستجو کردم چیزی دستگیرم نشد.
خطای زیر:

Illuminate \ Database \ QueryException (HY۰۰۰)
SQLSTATE[HY۰۰۰]: General error: ۱۳۶۴ Field 'parent_id' doesn't have a default value (SQL: insert into `comments` (`body`, `user_id`, `commenttable_id`, `commenttable_type`) values (تست, ۱, ۱, App\Discuss))

CommemtContorller :

class CommentController extends Controller
{
    public function store(Request $request)
    {
        $comment = new Comment;
        $comment -> body = $request -> get('comment_body');
        $comment -> user() -> associate($request->user());
        $discuss = Discuss::find($request->get('discuss_id'));
        $discuss -> comments() -> save($comment);

        return back();
    }
}

create_comments_table :

public function up()
    {
        Schema::create('comments', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned();
            $table->integer('parent_id')->unsigned();
            $table->text('body');
            $table->integer('commenttable_id')->unsigned();
            $table->string('commenttable_type');

        });
    }

Model Comment :

class Comment extends Model
{
    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public $timestamps = false;
}

Model Discuss :

class Discuss extends Model
{
    public function tags()
    {
        return $this->belongsToMany('App\Tag');
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function comments()
    {
        return $this->morphMany(Comment::class, 'commenttable')->whereNull('parent_id');
    }

    public $timestamps = false;
}

نمایش نظرات :

            <div class="card">
                <div class="card-header">پاسخ دادن به سوال</div>
                <div class="card-body">
                    @foreach ($discuss -> comments as $comment)
                    <div class="media">
                        <img class="mr-۳" src="{{ asset('img/۱.png') }}">
                        <div class="media-body">
                            <h۶ class="mt-۰">{{ $comment -> user -> name }}</h۶>
                            <p>{{ $comment -> body }}</p>
                        </div>
                    </div>
                    @endforeach
                    {!! Form::open(array('route'=>'comment.add')) !!}
                    @csrf
                    @method('post')
                    <div class="form-group">
                        {!! Form::label('commets','متن نظر') !!}
                        {!! Form::textarea('commets', null, ['class' => 'form-control', 'name' => 'comment_body']) !!}
                        <input type="hidden" name="discuss_id" value="{{ $discuss->id }}" />
                    </div>
                    {!! Form::button('ثبت نظر',['type'=>'submit','class'=>'btn btn-primary', 'style' => 'margin-top:۱۰px;']) !!}
                    {!! Form::close() !!}
                </div>
            </div>
رایموند
رایموند
@Raymond
ثبت پرسش جدید

پاسخ‌ها

4
رایموند
رایموند
@Raymond

تخصص: مختصص وردپرس - برنامه نویس لاراول

بهترین پاسخ

مشکل حل شد...
خطای ناشی از nullable نبودن parent_id هستش...

$table->integer('parent_id')->unsigned()->nullable();
حسام موسوی
حسام موسوی
@hesammousavi

تخصص: طراح و برنامه نویس

بجای این کار بهتره مقدار رو پیش فرض یا همون default فیلد مربوطه رو 0 قرار بدید تا بعدا راحت بتونید کامنت های اصلی با پاسخ رو جدا کنید

سلام
توضیح تصویر رو وارد کنید

چی بزارم که بهم ارور نده مقدار پیش فرض هم میزارم ارورمیده

شاید پاسخ شما همین‌جا باشد

توضیح تصویر رو وارد کنید

اینم ارور

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام