کیهان
3 سال پیش توسط کیهان مطرح شد
6 پاسخ

پیاده سازی سیستم تگ در وبسایت

سلام دوستان
خب جدول posts رو داریم ، جدول tags رو هم داریم یک ارتباط چند به چند ایجاد کردیم
حالا در هر پست چندین تگ داریم که این مشکلی نیست
ولی میخوام بدونم وقتی روی یک تگ کلیک میکنیم ما باید یک route داشته باشیم یا از روش دیگری برای این منظور استفاده کنیم
حالا اینکه جدول tags در شرایطی که وجود داره باید شامل چه فیلد هایی باشه

من گفتگو هایی با این عنوان دیدم ولی یکم کلی بودن و جواب رو نگرفتم
ممنون میشم :)
@Rp76
@mohaligateway
@muhammad
@mrn
@juza66
@ali.bayat
@hesammousavi
@hosseinshirinegad98
@milad
@ajdar9667
و ...


ثبت پرسش جدید
رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
0

فقط چرا در جدول تگ و پست از tagid و postid استفاده کردین ؟

این که کلا رد شد توضیح دادم که به ۳ تا جدول نیاز داری
۲تاش رو الان داری یکی دیگه باید بسازی

و اینکه تایپ فیلد name (tag name) توی جدول tags باید چی باشه ؟

string

@keyhan


Muhammad
تخصص : Back-End Developer
@muhammad 3 سال پیش مطرح شد
0

سلام. توی مدل تگ هم رلیشن زدین برای مدل پست، پس می‌تونین اونجا تگ رو بر اساس slug پیدا کنین و بعد به پست‌های اون تگ دسترسی داشته باشین.


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
1

سلام وقتتون بخیر!
چرا من اول تگ شدم 😅

خب سوال یکم ناجوره
اره باید Route داشته باشه و با رابطه hasmany پست های اون تگ رو بکشید بیرون!

public funtion posts(){
    return $this->hasmany(Post::class);
}

جدول تگ هم اینطوری باشه خوبه فکر کنم

// tag
id
post_id
tag

//post
id,
tag_id
...

بعدشم این رو با ۲ تا جدول نمیشه درست کرد
به یه جدول سومی نیاز داری به این صورت

//pivot table -> name = post_tag
id,tag_id,post_id

//tag table
id,tag

//post table
id,post

و رابطه اینجا اینطوری پیاده سازی میشه

//tag model
public function posts(){
    return $this->belongsto(Post::class,"post_tag");
}

//post model
public function tags(){
    return $this->belongsto(Tag::class,"post_tag");
}

و برای ذخیره هم به این صورت باید عمل کنی

$tag=Tag::first();
$tag->posts()->sync([
    ["post_id",$post->id]
]);

$post=Post::first();
$post->tags()->sync([
    ["tag_id",$tag->id]
])

اگر میخوای اطلاعات قبلی مربوط به تگ یا پستی که انتخاب کردی پاک بشه کد بالا خوبه در غیر اینصورت
پارامتر دوم تابع sync رو با false پر کنی درست میشه


کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش مطرح شد
0

@Rp76
وقتتون بخیر 🤣
یه سوال
فقط چرا در جدول تگ و پست از tag_id و post_id استفاده کردین ؟
و اینکه تایپ فیلد name (tag name) توی جدول tags باید چی باشه ؟


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
0

فقط چرا در جدول تگ و پست از tagid و postid استفاده کردین ؟

این که کلا رد شد توضیح دادم که به ۳ تا جدول نیاز داری
۲تاش رو الان داری یکی دیگه باید بسازی

و اینکه تایپ فیلد name (tag name) توی جدول tags باید چی باشه ؟

string

@keyhan


کیهان
تخصص : PHP programmer
@keyhan 3 سال پیش مطرح شد
0

ممنون از پاسختون
@muhammad
@Rp76


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

نگرفتی چی شد
واتساپ پیام بده!


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

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