امروز:سه شنبه ,۱۳۹۸/۰۷/۲۳
Download http://bigtheme.net/joomla Free Templates Joomla! 3
Home / Yii2 / ایجاد مدل به وسیله gii در Yii2

ایجاد مدل به وسیله gii در Yii2

ایجاد مدل به وسیله gii در Yii2

ایجاد مدل : Model Generator

در این آموزش ما می خواهیم برای جدول ازدیتابیس خود یک مدل ایجاد کنیم:
برای اینکار پس از وارد کردن آدرس ماژول gii اینجا بر روی model generate کلیک کرده .تصویر زیر:

ایجاد مدل با gii در yii2

از ابتدا شروع می کنیم به وارد کردن اطلاعات مورد نظرمون:

Generate Model Detailse

Table Name

نام جدول خود را وارد می کنیم .(هنگامی که شما شروع به تایپ می کنید جداول دیتابیس به شما پیشنهاد می شود)

همچنین با hover کردن موس بر روی نام Table Name توضیحات مربوط آن نمایش داده می شود

 

Model Class

مشخص کردن نام مدل .که زمانی که بر روی تکست باکس کلیک کنید فریم ورک به صورت اتوماتیک به صورت PascalCase نام مدل را ایجاد می کند
برای مثال اگر نام جدول ما article باشد نام مدل ما به صورت Article نمایش داده میشود.
درمورد جداول دوکلمه ای : article_category به این صورت سیستم نمایش می دهد : ArticleCategory

Namespace

این مورد نیم اسپیس کلاسی activerecorde  ما را مشخص می کند

به صورت پیش فرض بر روی app\models می باشد .

در نسخه های basic که به همین شکل نوشته می شود .

اما در پروژه های advance این مورد می تواند شامل موارد زیر باشد :

app\models

frontend\models

backend\models

common\models

که بسته به اینکه در کدام نیم اسپیس می خواهید آن را ایجاد کنید قابل تغییر می باشد که

باید به صورت دستی تغییر بدهید.

Bace Class

به صورت پیش فرض بر روی yii\db\ActiveRecord تنظیم میباشد و به این معنی است که مدلی که ایجاد می کنید از چه کلاسی

ارث می بره. در صورتی که کلاس مخصوص به خود را ایجاد کرده اید نام آن را قرار دهید

Database Connection ID

به پیش فرض بر روی db  تنظیم هست و منظور نامی است که هنگام تنظیمات دیتابیس برای آن قرار دادید:

درپروژه های basic  اشاره به فایل db.php  در فولدر config

در پروژه های advance  اشاره به فایل main-local.php در فولدر common


'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=bge',
'username' => 'root',
'password' => '123456789',
'charset' => 'utf8',
],

 

Use Table Prefix

در صورتی که جدول شما دارای prefix هست و نمیخواهید که این prefix  در مدل لحاظ بشه تیک آن را بزنید

مثلا جدول tpl_post  دارید ، در صورتی که تیک آن را بزنید

مدل ایجاد شده نام جدول را post  و prefix آن را tpl  می گذارد

 

Generate Relations

این گزینه که به صورت دراپ دان هست مربوط به روابط بین جداول می باشد

که میتوانید ایجاد یا عدم ایجاد آن را مدیریت کنید

 

Generate Labels from DB Comments

متونی که در comment جداول ایجاد کردید را به عنوان label  در مدل قرار می دهد :


public function attributeLabels() {
return [
'id' => 'ID',
'fullname' => 'نام و نام خانوادگی',
'email' => 'ایمیل',
'subject' => 'موضوع',
'content' => 'متن پیام',
'user_id' => 'ارسال کننده',
'created_at' => 'Created At',
'updated_at' => 'Updated At',
'department_id' => 'دپارتمان',
'status' => 'وضعیت',
];
}

 

Generate ActiveQuery

استفاده از activeQuery  را فعال می کند که پس از کلیک بر روی آن  موارد دیگر اضافه می شود

فعلا نمیخواهیم در اینجا به این موضوع بپردازیم

 

Enable I18N

استفاده از چند زبانگی را فراهم میکند . در آموزش های بعدی به آن می پردازیم

 

Use Schema Name

schema name  را در active record  لحاظ می کند

Code Template

قالب ایجاد مدل را انتخاب می کند .در صورتی که میخواهید استاندارد ایجاد مدل را تغییر دهید ابتدا باید یک قالب ایجاد کنید و در اینجا آن را انخاب نمایید

در آخر دکمه ی preview  کلیک کرده تا کدمربوط را ایجاد کند .تصویر زیر:

Generate Model Yii2 By Gii

 

در صورتی که همه چی اوکی بود بر روی دکمه Generate کلیک کرده و به فولدر مدل ها مراجعه کنید تا مدل خود را ببینید.

<?php

namespace app\models;

use Yii;

/**
 * This is the model class for table "buy_cat".
 *
 * @property integer $id
 * @property string $title
 * @property integer $parent_id
 *
 * @property Buy[] $buys
 * @property NBuyCat $parent
 * @property NBuyCat[] $nBuyCats
 */
class NBuyCat extends \yii\db\ActiveRecord
{
    /**
     * @inheritdoc
     */
    public static function tableName()
    {
        return 'buy_cat';
    }

    /**
     * @inheritdoc
     */
    public function rules()
    {
        return [
            [['parent_id'], 'integer'],
            [['title'], 'string', 'max' => 100]
        ];
    }

    /**
     * @inheritdoc
     */
    public function attributeLabels()
    {
        return [
            'id' => 'ID',
            'title' => 'Title',
            'parent_id' => 'Parent ID',
        ];
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getBuys()
    {
        return $this->hasMany(Buy::className(), ['cat_id' => 'id']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getParent()
    {
        return $this->hasOne(NBuyCat::className(), ['id' => 'parent_id']);
    }

    /**
     * @return \yii\db\ActiveQuery
     */
    public function getNBuyCats()
    {
        return $this->hasMany(NBuyCat::className(), ['parent_id' => 'id']);
    }
}

Check Also

yii2 The ‘cursor’ option is required, except for aggregate with the explain argument

yii2 The ‘cursor’ option is required, except for aggregate with the explain argument برای حل …

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *