سلام دوستان
من بخش کامنت رو پیاده سازی کردم و هرکامنتی ک گذاشته میشه مربوط به پست خودشه ، الان میخام بخش reply رو طراحی بکنم ب نظر شما چیکار کنم؟
وقتی یکی کامنت میزاره خب در اصل یک ایدی براش تو دیتابیس ذخیره میشه و الان من چجوری بگم کسی ک داره ریلای میکنه پیامش مساوی باشه با ایدی اون کامنت؟ خیلی سرچ کردم ب جایی نرسیدم اگ کسی ی توضیح خوب داره برام بگه ممنون میشم، شرط هم میزارم انجام نمیشه نمیدونم من اشتبا انجام میدم یا ی مدل دیگس!
سلام چون پی اچ پی خام هست اینجا توضیح دادن یکم سخته میتونی باهام داخل تلگرام ارتباط بگیری برات توضیح بدم ولی بخام خلاصه بگم باید یک فیلد در دیتابیس به نام parent_id اضافه کنی و پاسخ هایی که به عنوان ریپلای هستن رو یک اینپوت هیدن براش بزاری و مقدار parent_id رو برابر با ایدی اون نظر ثبت شده اصلی بزاری و هنگام نمایش نظرا اونایی که parent_id دارن رو زیر محموعه نظرات اصلی مربوطشون بزارین
سلام
برای reply یک فیلد در جدول نظرات اضافه کنید parent_id و به صورت دیفالت 0 باشد
و اگر کاربر برای پست نظر ایجاد کرد همون 0 رو در نظر بگیرید
اگر در پاسخ به نظر یکی دیگه بود id اون نظر رو به عنوان parent_id بزارید
این کد جدول نظرات من هست
Schema::create('comments', function (Blueprint $table) {
$table->id();
$table->unsignedBigInteger('user_id')->nullable();
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
$table->string('name');
$table->text('text');
$table->boolean('is_approved')->default(false);
$table->unsignedBigInteger('post_id');
$table->foreign('post_id')->references('id')->on('posts')->onDelete('cascade');
$table->unsignedBigInteger('parent_id')->default(0);
$table->timestamps();
});
@mrn
ممنون از پاسخگوییتون ، منم یک فیلد ایجاد کردم ، برا مثال اقای x کامنت گذاشته الان اقای y میخاد پاسخ بده من چجوری باید مقدار اقای x رو بگیرم؟
چون وقتی مقدار میگیرم اینطوری ذخیره میشه:
فرض کنین این x ی کامنت گذاشته و ایدی این کامنت 1 و نفرات بعدی هم همینطوری 2 . 3 .4. 5 و ....
وقتی مقدار این کامنت x رو میگیرم و میگم هرچی که به این x پاسخ داده شد ایدی این کامن بره ذخیره بشه قسمت parent_id ب قول خودتون ولی اینطوری نمیشه ، ب جاش ادامه عدد اون بالا ک گفتم 6 . 7 .8. 9 و .... ب ترتیب ذخیره میشه
ی خورده راهمایی بکنین ک باید چیکار کنم دقیق مثل شما بشه و این مشکلات رو نداشته باشم
نگا کنید تو صفحه تکی مقالات
این کد فرم برای ارسال نظر اصلی هست بدون parent_id و در پاسخ هیچ کس نیست
<form wire:submit.prevent="SendNewComment" class="row max-auto">
<div class="col-12">
@error('comment.text')
<span class="text-danger">{{ $message }}</span>
@enderror
<textarea wire:model.lazy="comment.text" rows="5" placeholder="نظر خود را درباره این مطلب با دیگران به اشتراک بگذارید"></textarea>
</div>
@error('comment.name')
<span class="text-danger">{{ $message }}</span>
@enderror
<div class="col-12 col-md-6">
<input wire:model.lazy="comment.name" type="text" placeholder="نظر شما به چه نامی در سایت منتشر شود؟">
</div>
{{-- <div class="col-12 col-md-6">
<input type="email" placeholder="ایمیل">
</div> --}}
<div class="col-12">
<button type="submit" class="btn1 mx-auto ms-md-0">ارسال نظر</button>
</div>
</form>
حالا شما تو php خام روت درست کنید و ادرس روت رو بزارید تو action و اطلاعات ورودی رو بگیرید و کامنت بدون parent_id ذخیره کنید
بعد پایین لیست تمام نظرات رو دارم
داخل لیست هر نظر یک فرم دارم که برای پاسخ به اون نظر هست و display همشون none وقتی رو ایکون زدم نشون میدم
@foreach ($comments as $item)
<div class="comment-body">
<div class="user-meta">
<div class="user-img">
<img src="{{ asset('/user-assets/images/logo.png') }}" class="img-fluid">
</div>
<div class="user-name">
<p>{{ $item->name }}</p>
@if (!$item->user)
<p class="user-type">مهمان</p>
@endif
</div>
<div class="comment-time">
در
<span>{{ jdate($item->created_at)->format("j F Y G:i") }}</span>
<p>درباره این مطلب گفته:</p>
</div>
</div>
<div class="comment-content">
<p>{{ $item->text }}</p>
</div>
<div class="reply-form">
<form wire:submit.prevent="SendResponseComment" class="row max-auto">
<div class="col-12">
@error('response.text')
<span class="text-danger">{{ $message }}</span>
@enderror
<textarea wire:model.lazy="response.text" rows="5" placeholder="نظر خود را درباره این مطلب با دیگران به اشتراک بگذارید"></textarea>
</div>
@error('response.name')
<span class="text-danger">{{ $message }}</span>
@enderror
<div class="col-12 col-md-6">
<input wire:model.lazy="response.name" type="text" placeholder="نظر شما به چه نامی در سایت منتشر شود؟">
</div>
{{-- <div class="col-12 col-md-6">
<input type="email" placeholder="ایمیل">
</div> --}}
<div class="col-12">
<button type="submit" class="btn1 mx-auto ms-md-0">ارسال نظر</button>
</div>
</form>
</div>
شما داخل فرم ارسال پاسخ یک فیلد بزارید به عنوان parent_id تا مشخص بشه حالا با php خام نمیدونم به چه صورت میخاید پاس بدید
تو لاراول id اون نظر والد رو در action قرار میدیم
شما از یک فرم ارسال نظر نمیتونید متوجه بشید در پاسخ به کیه باید یک فرم برای نظر اصلی داشته باشید
و داخل حلقه که تمام نظرات رو نشون میدید هم برای هر نظر یک فرم درست کنید و id همون نظر رو در Action قرار بدید
سلام چون پی اچ پی خام هست اینجا توضیح دادن یکم سخته میتونی باهام داخل تلگرام ارتباط بگیری برات توضیح بدم ولی بخام خلاصه بگم باید یک فیلد در دیتابیس به نام parent_id اضافه کنی و پاسخ هایی که به عنوان ریپلای هستن رو یک اینپوت هیدن براش بزاری و مقدار parent_id رو برابر با ایدی اون نظر ثبت شده اصلی بزاری و هنگام نمایش نظرا اونایی که parent_id دارن رو زیر محموعه نظرات اصلی مربوطشون بزارین
واااااای خد اازت راضی باشه ب محض اینکه گفتین اینپوت انجام دادم مشکلم حل شد تونستم اوکیش کنم خیلییی ممنون سه روز بود درگیر این بودم
@ajdar9667
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟