💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱۱ منصور لیاقت
خطا SQLSTATE[HY000]: General error: 1364 Field 'user_id' doesn't have a default value
احمدرضا فاطمی کیا حل شده توسط احمدرضا فاطمی کیا

با سلام و احترام خدمت اساتید محترم ؛
برای ایجاد نظر برای هر پست به خطا خوردم ، داخل اینترنت هم سرچ کردم اما چیزی متوجه نشدم
ممنون میشم راهنمایی بفرمایید ...

پیشاپیش کمال تشکر را دارم .


خطا

Screenshot-2023-11-17-114401-9y04.png
class CommentController extends Controller { public function store(Request $request , video $video) { $video->comments()->create([ 'user-id' => auth()->id(), 'body' => $request->body ]); return back()->with('alert' , __('messages.success.message')); } } Route::post('/videos/{video}/comments' , [CommentController::class , 'store'])->name('comments.store');
منصور لیاقت ۲۶ آبان ۱۴۰۲، ۰۸:۲۲
class CommentController extends Controller
{
    public function store(Request $request , video $video)
    {
     $video->comments()->create([
        'user-id' => auth()->id(),
        'body' => $request->body
     ]);
     return back()->with('alert' , __('messages.success.message'));
    }
} 
																		
منصور لیاقت ۲۶ آبان ۱۴۰۲، ۰۸:۲۴
مدل
class comment extends Model
{
    use HasFactory;
    protected $fillable = ['body' , 'user_id'];
    public function video()
    {
        return $this->belongsto(video::class);
    }
    public function user()
    {
        return $this->belongsto(user::class);
    }
    جدول
     Schema::create('comments', function (Blueprint $table) {
            $table->id();
            $table->foreignId('video_id')->constrained();
            $table->foreignId('user_id')->constrained();
            $table->text('body');
            $table->timestamps();
        });
        فکتوری
        public function definition()
    {
        return [
            'user_id' => User::factory(),
            'video_id' => video::first() ?? video::factory(),
            'body' => $this->faker->realtext()
        ];
        ویو بلید
         <!-- Comments -->
                        <div id="comments" class="post-comments">
                            <h3 class="post-box-title"><span>{{$video->comments->count()}}</span> نظرات</h3>
                            <ul class="comments-list">
                                @foreach($video->comments as $comment)
                                <li>
                                    <div class="post_author">
                                        <div class="img_in">
                                            <a href="#"><img src="{{$comment->user->gravatar}}" alt="owner_picture"></a>
                                        </div>
                                        <a href="#" class="author-name">{{$comment->user->name}}</a>
                                        <time datetime="2017-03-24T18:18">{{$comment->Created_At_In_Hiuman}}</time>
                                    </div>
                                    <p> {{$comment->body}}
                                    </p>
                                    <a href="#" class="reply">پاسخ</a>
                                </li>
                                @endforeach
                            </ul>
                            @auth
                            <h3 class="post-box-title">ارسال نظرات</h3>
                            <form action="{{route('comments.store' , $video)}}" method="POST">
                                @csrf  
                                <textarea class="form-control" name="body" rows="8" id="Message" placeholder="پیام"></textarea>
                                <button id="contact_submit" class="btn btn-dm">ارسال پیام</button>
                            </form>
                            @endauth
                        </div>
                        <!-- // Comments -->
 روت
 Route::post('/videos/{video}/comments' , [CommentController::class , 'store'])->name('comments.store');
                       
منصور لیاقت ۲۶ آبان ۱۴۰۲، ۰۸:۲۷

از user_id دامپ گرفتم و مقدار user_id را چاپ کرد
من با یوزی میخوام کامنت بزارم زیر پست ، که احراز شده و همچنین داخل دیتابیس id داره 

public function store(Request $request , video $video) { dd(auth()->id()); // $video->comments()->create([ // 'user-id' => auth()->id(), // 'body' => $request->body // ]); // return back()->with('alert' , __('messages.success.message')); }

 

منصور لیاقت ۲۶ آبان ۱۴۰۲، ۱۱:۴۸

class comment extends Model { use HasFactory; protected $fillable = ['video_id' , 'user_id' , 'body' ]; public function video() { return $this->belongsto(video::class); } public function user() { return $this->belongsto(user::class); }
منصور لیاقت ۲۶ آبان ۱۴۰۲، ۱۴:۱۳
class comment extends Model
{
    use HasFactory;
    protected $fillable = ['video_id' , 'user_id' , 'body' ];
    public function video()
    {
        return $this->belongsto(video::class);
    }
    public function user()
    {
        return $this->belongsto(user::class);
    }
منصور لیاقت ۲۶ آبان ۱۴۰۲، ۱۴:۱۵

شما user id رو با خط فاصله وارد کردید در کدتون در حالی که باید با آندرلاین بزنید و به همین علت یوزرآیدی رو پیدا نمیکنه. 

$video->comments()->create([
        'user_id' => auth()->id(),
        'body' => $request->body
     ]);
بهترین پاسخ
احمدرضا فاطمی کیا ۲۶ آبان ۱۴۰۲، ۱۷:۱۶

بله بله 
چه اشتباهی 
100 بار کد رو خوندم ولی واقعا متوجه این اشتباه نشده بودم

مرسی ، خیلی لطف کردید

منصور لیاقت ۲۷ آبان ۱۴۰۲، ۱۳:۲۱