ماژول هفته: Relation برای ارتباطات پیچیده

ماژول relation‌ دروپال

به خودم گفتم در چند هفته آینده ماژول هایی رو معرفی کنم که در لیست بهترین های 2012 دروپالیون وجود داره. این هفته به سراغ ماژول relation‌ اومدم. ماژولی که هنوز خیلی محبوب نشده اما خیلی میتونه به شما در انجام پروژه های دروپال کمک کنه. بنابراین بد نیست اگر ما رو در ادامه بحث همراهی کنید تا به قدرت دروپال بیشتر پی ببریم.

وقتی ما قراره یک پروژه رو برنامه نویسی کنیم معمولا اول از همه ساختار دیتابیس رو تعیین میکنیم. خیلی از مواقع به این نتیجه میرسیم که یک جدول واسط برای ارتباط موجودیت های مختلف ایجاد کنیم.مثلا رابطه دانشجو با درس که یک جدول دانشجو/درس برای اون ایجاد میکنیم و ID های دانشجو و درس در این جدول ذخیره میشه به این ترتیب بعدا میفهمیم که چه دانشجویی چه درسهایی دارد. یا میفهمیم چه درسی توسط چه دانشجوهایی گرفته شده. خوب حتما به خودتون میگید که این کار رو با دروپال میشه انجام داد به وسیله entity reference‌. من به شما حق میدم. اولین مشکل اینه که اگر شما از دانشجو به درس یک فیلد reference‌ درست کنید در نهایت فقط میتونید خروجی لیست درس های یک دانشجو را ببینید. و اگر بخواهید لیست دانشجوهایی که یک درس مشخص را گرفته اند ببینید باید یک فیلد back reference‌ در درس به دانشجو ایجاد کنید. بنابراین ما نیاز به 2 فیلد داریم. 

مشکل دوم رو با یک مثال دیگه شرح میدهم. فرض کنید میخواهید ارتباط دوستی بین کاربران را تعیین کنید. شما باز میتوانید یک فیلد در هر کاربر تعریف کنید که لیست دوستانش را انتخاب کند. اما فرض کنید میخواهیم کیفیت دوستی را نیز تعیین کنیم. یعنی انتخاب کنیم که کاربر 1 با کاربر 2 ارتباطی از نوع همسر دارند. یا ارتباطی از نوع دوست یا همکلاسی. در این صورت entity reference هیچ راه حلی ندارد. شما نیاز به راهی دارید که نوع ارتباط را بتوان مشخص کرد. ماژول relation‌ چون امکان این را دارد که برای نوع ارتباط فیلد تعریف کنیم بنابراین گزینه ایده آلی برای این نوع ارتباط است.

از دیگر امکانات این ماژول ارتباطات تعدی است. یعنی اگر کاربر 1 با کاربر 2 دوست است و اگر کاربر 2 با کاربر 3 دوست است بنابراین کاربر1 با کاربر 3 نیز دوست است. این نوع ارتباط در ماژول relation‌ قابل تعریف است.
در ضمن شما برای استفاده از این ماژول نیاز به ایجاد هیچ فیلدی ندارید. البته میتوانید فیلد هم ایجاد کنید اما بدون فیلد هم میتوانید از طریق بلوکی که ساخته میشود ارتباطات را مشخص کنید.

شاید بعد از همه اینها دارید به این فکر میکنید که پس از این به بعد میتوانم تمام ارتباطات سایت را با این ماژول مدیریت کنم. باید این نکته رو یادآوری کنم که هر ماژولی نقطه ضعفی دارید و متاسفانه مشکل ماژول relation‌ منطق پیچیده آن است. شما برای مسلط شدن به این ماژول کمی به تمرین نیاز دارید. بنابراین اگر مطمئن هستید ارتباطات شما خیلی پیچیده نیست میتوانید از ماژول entity reference‌ استفاده کنید.

خوشحال میشویم تجربه های خودتون در استفاده از این ماژول رو با ما به اشتراک بزارید.

تگ های مطلب: 

دیدگاه‌ها

مثل همیشه عالیه. ممنون از شما

مثل همیشه عالیه. ممنون از شما.

ممنون ، ازش استفاده نکردم ولی

ممنون ، ازش استفاده نکردم ولی باید یه امتحانی بکنم با این حساب!

سلام

سلام ممنون پس به نظر شما این ماژول م یتونه جایگزین entity reference بشه و بهتره از relation‌ استفاده بشه زین پس؟ چون بنده با هیچ کدوم کار نکردم و می خوام به یکی مسلط بشم و همیشگی استفاده کنم. ممنون

در قسمت نظرات، نظرات کلیه

در قسمت نظرات، نظرات کلیه دوستانر امی نویسه تایید نشدهاما ما می بینیم. لطفا بررسی کنید

کلا ما در سایت تائید نظر

کلا ما در سایت تائید نظر نداریم. فکر میکنیم خواننده های سایت اینقدر با فرهنگ هستند که از این فضا درست استفاده کنند.در مورد استفاده از ماژول relation هم باید بگم که این ماژول هنوز کمی باگ داره و پیچیدگی های بیشتری نسبت به entity reference داره. هیچ کدام نمیتونه جای اون یکی رو بگیره. به تسلط خاصی هم نیاز نداره. از هر دو استفاده کنید

دیدگاه جدیدی بگذارید

آخرین ارسال ها

محتواهای محبوب

درباره ما

Author
اینجا دروپال یعنی همه چیز. در مورد دروپال صحبت میکنیم. ماژول هامون رو به اشتراک میزاریم در مورد قالب دروپال ، فروشگاه دروپال، دروپال فارسی و تاریخ شمسی دروپال صحبت میکنیم و هرچیزی که در مورد طراحی سایت با دروپال میدونیم به هم انتقال میدیم. دروپالیون یک سایت شخصی نیست. ما دست همه کسانی که برای پیشرفت دروپال تلاش میکنند رو میفشاریم و با آغوش باز اونها رو در این سایت میپذیریم.

تماس با ما

با ما تماس بگیرید.

logo-samandehi