Skip to content

Pluf Model

Mohammad Hadi Mansouri edited this page Jan 4, 2017 · 2 revisions

Pluf_Model

ساختار داده‌ای اصلی در pluf است Pluf_Model است. ORM نیز برای ایجاد پایگاه داده و جدول‌های مربوطه از این مدل استفاده می‌کند. بنابراین کلیه ساختار‌های داده‌ای (به خصوص مواردی که باید به صورت یک موجودیت در پایگاه داده قرار گیرند) از این مدل گسترش داده می‌شوند. امکانات مختلفی در این مدل قرار داده شده که در این قسمت برخی از آن‌ها شرح داده می‌شود.

تعریف رابطه چند به چند

امکان تعریف رابطه چند به چند بین دو موجودیت گسترش یافته از Pluf_Model وجود دارد. برای این کار باید در یکی از موجودیت‌ها فیلدی برای این ارتباط قرار داده شود. به عنوان مثال فرض کنید دو مدل داده‌ای با نام MY_Category و MY_Item داریم. برای ایجاد ارتباط چند به چند بین آن‌ها باید در یکی از این دو مدل مثلا در MY_Category یک فیلد به صورت زیر تعریف شود:

        'items' => array(
            'type' => 'Pluf_DB_Field_Manytomany',
            'model' => 'Item',
            'relate_name' => 'assets',
            'blank' => false,
            'editable' => false,
            'readable' => false
        )

نکته: برای تعریف رابطه چند به چند تنها باید در یکی از دو مدل داده‌ای مربوط به رابطه فیلد مربوطه را تعریف کنید در غیر این صورت ایجاد پایگاه داده با مشکل مواجه خواهد شد.

setAssoc: ایجاد ارتباط بین دو داده در ارتباط چند به چند

وقتی بین دو مدل داده‌ای ارتباط چند به چند وجود داشته باشد. برای ایجاد ارتباط بین دو داده از نوع این مدل‌های داده‌ای می‌توان از متد setAssoc() استفاده کرد. به عنوان نمونه در مثال بالا، فرض کنیم $item داده‌ای از نوع MY_Item است و $category داده‌ای از نوع MY_Category است. برای اضافه کردن یک item به یک category می‌توان دستور زیر را استفاده کرد:

        $item = new MY_Item();
        $category = new MY_Category();
        ...
        $category->setAssoc($item);

delAssoc: حذف ارتباط بین دو داده در ارتباط چند به چند

برای حذف ارتباط بین دو داده از نوع دو مدل داده‌ای که ارتباط چند به چند بین‌شان تعریف شده می‌توان از متد delAssoc() استفاده کرد. به عنوان نمونه در مثال بالا، فرض کنیم $item داده‌ای از نوع MY_Item است و $category داده‌ای از نوع MY_Category است. برای حذف یک item به یک category می‌توان دستور زیر را استفاده کرد:

        $item = new MY_Item();
        $category = new MY_Category();
        ...
        $category->delAssoc($item);