سلام دوستان
من برای پروژم نیازه که تگ یا همون برچسب هارو برای مقالات و محصولاتم نمایش بدم
هر اموزشی که خوندم طوری بود که کاربر باید تگ ها از یه بخش دیگ اضافه میکرد بعدش توی ایجاد مقاله از داخل یه لیست که حاوی اون تگ هایی بود که قبلا اضافه کرده بود به دیتابیس , تگ هاشو انتخاب میکرد
اما من میخوام یجورایی مثل سیستم تگینگ وردپرس باشه که کاربر هرتگی که دلش میخواد وارد میکنه
میشه یه توضیحی برای ایجادش بدید یا مقاله ای که چیزی رو که میخوام توضیح داده باشه معرفی کنید؟
من خودم باشم یک جدول با ساختار زیر میزنم :
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('slug', 191)->unique();
$table->enum('type', ['article', 'product']);
$table->timestamps();
});
فقط توجه داشته باش برای روش اول باید یک جدول دیگه هم با عنوان article_tags بزنی و تگ های مطالب رو اونجا ذخیر کنی.البته این کار بستگی به این داره مقالات و محصولات در 1 جدول باشه یا جدا جدا باشه. اگه جدا جدا باشه بهتره برای هر کدوم یک جدول جدا بزنی که کارت راحت تر باشه یعنی :
و ساختار جدول هم به این صورت خواهد بود :
Schema::create('article_tags', function (Blueprint $table) {
$table->increments('id');
$table->string('article_id');
$table->string('tag_id');
$table->timestamps();
$table->foreign('article_id')->references('id')->on('articles');
$table->foreign('tag_id')->references('id')->on('tags');
});
سلام. اول یه توضیح مختصر در مورد سیستم تگینگ بهتون میدم :
['tag3','tag2','tag1']
توجه کنید اگر بخواید از این روش استفاده کنید باید در Model اون مطالب این رو تعریف کنید :
protected $casts = [
'tags' => 'array'
];'
@dr-code.ir
اتفاقا قبلا از روش دوم برای تگ ها استفاده کردم اما یه مشکلی داشتم
مثلا یه مقاله 3تا تگ داره کاربر روی یه تگ کلیک میکنه حالا چطور مقاله هایی که اون تگ رو دارن نمایش بدم؟
روش دوم رو پیشنهاد نمی کنم چون باعث انباشتگی دیتا میشه. یعنی فرض کنید 100 تا مقاله دارید شما و توی 50 تاشون تگ "مقاله" تکرار شده و این اصلا درست نیست.
ولی اگر استفاده کردید برای اینکه مقاله های مرتبط با اون تگ رو پیدا کنید می تونید به روش زیر عمل کنید :
$tag = 'داستان';
$articles = Article::whereIn('tags', "[$tag]")->get();
@dr-code.ir
ممنونم
چون هم برای محصولات و هم برای مقالات میخوام , برای روش اول از روابط پلی مورفیک استفاده کنم؟
یا برای هرکدوم یه تیبل جداگانه ایجاد کنم؟
(البته این سوالو داخل لاراکست پرسیدم و گفتن پلی مورفیک خیلی پیچیده میکنه کارو , تیبل جداگانه ایجاد کن و .... حالا میخوام نظر شمارو هم بدونم)
@m.delshad78
خیلی راحت از روابط پلیمورفیک استفاده کنید. در گفتگوی زیر کامل بهش اشاره شده:
https://roocket.ir/discuss/2390
من خودم باشم یک جدول با ساختار زیر میزنم :
Schema::create('tags', function (Blueprint $table) {
$table->increments('id');
$table->string('title');
$table->string('slug', 191)->unique();
$table->enum('type', ['article', 'product']);
$table->timestamps();
});
فقط توجه داشته باش برای روش اول باید یک جدول دیگه هم با عنوان article_tags بزنی و تگ های مطالب رو اونجا ذخیر کنی.البته این کار بستگی به این داره مقالات و محصولات در 1 جدول باشه یا جدا جدا باشه. اگه جدا جدا باشه بهتره برای هر کدوم یک جدول جدا بزنی که کارت راحت تر باشه یعنی :
و ساختار جدول هم به این صورت خواهد بود :
Schema::create('article_tags', function (Blueprint $table) {
$table->increments('id');
$table->string('article_id');
$table->string('tag_id');
$table->timestamps();
$table->foreign('article_id')->references('id')->on('articles');
$table->foreign('tag_id')->references('id')->on('tags');
});
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟