Davood
2 هفته پیش توسط Davood مطرح شد
2 پاسخ

نمایش اطلاعات در سایت روابط many to many

سلام
من دو تا جدول دارم categories و posts و یه جدول میانی دارم به اسم categorypost
میخوام مقالات مربوط به هر دسته رو لیست کنم و تو سایت نشون بدم مثلا دسته کشاورزی هواشناسی تغذیه و......
تو رابطه چند به چند چطور میتونم نمایششون بدم از چه کوئری باید استفاده کنم
به عنوان مثال تمام بخش های مقاله رو نشون میدم میخوام با استفاده از جدول رابط (pivot) دسته بندی رو هم نشون بدم
میشه راهنمایی کنید چطوری ؟
ممکنه یک خبر سه تا دسته بندی داشته باشه.

@hesammousavi


ثبت پرسش جدید
سید جواد برهانی
تخصص : CTO
@jvdborhani 1 هفته پیش مطرح شد
1

برای نمایش مقالات مربوط به هر دسته بهترین روش استفاده از روابط چند به چند در پایگاه‌داده است، که در اینجا با استفاده از جدول میانی categorypost می‌توانید این کار را انجام دهید. برای نمایش دسته‌ها به همراه مقالات مربوط به آنها و اطلاعات مربوط به هر مقاله، می‌توانید از یک کوئری JOIN استفاده کنید. البته برای نمایش دقیقتر، اطلاعات جدول‌های categories، posts و categorypost لازم است.

فرض کنید جدول categories دارای ستون‌های id و name و جدول posts دارای ستون‌های id و title باشد. همچنین جدول میانی categorypost دارای ستون‌های category_id و post_id باشد که به ترتیب به جداول categories و posts مرتبط هستند.

با توجه به این فرضیات، یک کوئری می‌تواند به شکل زیر باشد:

SELECT c.name AS category_name, p.title AS post_title
FROM categories c
INNER JOIN categorypost cp ON c.id = cp.category_id
INNER JOIN posts p ON cp.post_id = p.id
ORDER BY c.name, p.title;

این کوئری به شما اطلاعات دسته‌ها و مقالات مربوط به آنها را نمایش می‌دهد و می‌توانید این اطلاعات را در سایت خود نمایش دهید. اگر می‌خواهید دقیقتر دسته‌بندی را نشان دهید (مثلاً هر مقاله ممکن است به چند دسته تعلق داشته باشد)، می‌توانید با استفاده از GROUP_CONCAT یک ستون جدید برای دسته‌بندی‌ها ایجاد کنید.

SELECT p.title AS post_title, GROUP_CONCAT(c.name) AS categories
FROM posts p
INNER JOIN categorypost cp ON p.id = cp.post_id
INNER JOIN categories c ON cp.category_id = c.id
GROUP BY p.id;

این کوئری اطلاعات مقالات و دسته‌های مربوط به آنها را نمایش می‌دهد و دسته‌های هر مقاله را به صورت یک رشته جداگانه نشان می‌دهد. با این اطلاعات می‌توانید در سایت خود به زیبایی دسته‌بندی مقالات را نشان دهید.


Davood
تخصص : PHP - Laravel
@dfardabasi 1 هفته پیش آپدیت شد
0

سلام ممنون بابت پاسختون
@jvdborhani
من با الکوئنت لاراول میخوام کوئری بزنم


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

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