نمایش نتایج 1 تا 9 از 9

نام تاپیک: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    http://reza.biz
    پست
    858

    عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    کوئری بیلدر ها در Yii
    چنانچه نخواید از Active record فریم ورک Yii استفاده کنید ، کوئری بیلدرها به کارتون میاد .
    استفاده از این شیوه سرعت کدنویسی شما رو پایین می‌آورد ولی در نهایت سرعت اجرای برنامه بیشتر خواهد بود .

    دستورSELECT


    Yii::app()->db->createCommand()
    ->select('*')
    ->from('tbl')
    ->where('id=:id',array(':id'=>$_GET['id']))
    ->queryAll();

    همه چیز واضح هست فقط چنانچه نیاز داشتید چند ستون دلخواه را واکشی کنید توی متد select اونها رو بنویسید بصورت
    select('id , title , content')

    نحوه استفاده از where هم کاملاً معلوم هست .(مثل PDO)
    اما انواع مختلفش رو از کتاب Yii Guide
    // WHERE id=1 or id=2 
    where(’id=1 or id=2’)


    // WHERE id=:id1 or id=:id2
    where(’id=:id1 or id=:id2’, array(’:id1’=>1, ’:id2’=>2))


    // WHERE id=1 OR id=2
    where(array(’or’, ’id=1’, ’id=2’))


    // WHERE id=1 AND (type=2 OR type=3)
    where(array(’and’, ’id=1’, array(’or’, ’type=2’, ’type=3’)))


    // WHERE ‘id‘ IN (1, 2)
    where(array(’in’, ’id’, array(1, 2))


    // WHERE ‘id‘ NOT IN (1, 2)
    where(array(’not in’, ’id’, array(1,2)))


    // WHERE ‘name‘ LIKE ’%Qiang%’
    where(array(’like’, ’name’, ’%Qiang%’))


    // WHERE ‘name‘ LIKE ’%Qiang’ AND ‘name‘ LIKE ’%Xue’
    where(array(’like’, ’name’, array(’%Qiang’, ’%Xue’)))


    // WHERE ‘name‘ LIKE ’%Qiang’ OR ‘name‘ LIKE ’%Xue’
    where(array(’or like’, ’name’, array(’%Qiang’, ’%Xue’)))


    // WHERE ‘name‘ NOT LIKE ’%Qiang%’
    where(array(’not like’, ’name’, ’%Qiang%’))


    // WHERE ‘name‘ NOT LIKE ’%Qiang%’ OR ‘name‘ NOT LIKE ’%Xue%’
    where(array(’or not like’, ’name’, array(’%Qiang%’, ’%Xue%’)))

    برای واکشی اطلاعات نهایی میتوانید از متد queryAll استفاده کنید چنانچه نیاز به واکشی یک سطر داشتید از متد queryRow استفاده کنید .
    چنانچه نیاز داشتید فقط اولین مقدار اولین ستون رو واکشی کنید از queryScalar استفاده کنید
    یک مثال :


    $count = Yii::app()->db->createCommand()
    ->select('count(id)')
    ->from('post')
    ->queryScalar();


    update
    برای آپدیت کردن یک سطر از متد update استفاده می‌شود .
    مثال


    $rowAffected = Yii::app()->db->createCommand()
    ->update('post',array(
    'title'=> $_POST['title'] ,
    'content'=>$_POST['content'] ,
    ),'id=:id',array(':id'=>$_POST['id']));

    مقدار بازگشتی تعداد رکوردهای تغییر کرده هست .


    Insert
    برای ساخت رکورد جدید


    Yii::app()->db->createCommand()
    ->insert('post' , array(
    'title'=>$_POST['title'] ,
    'content'=>$_POST['content'],
    ));

    delete
    برای حذف رکورد
    مقدار بازگشتی تعداد رکوردهای تغییر کرده


    Yii::app()->db->createCommand()
    ->delete('post','id=:id',array(':id'=>$_POST['id']));


    مقدمه‌ای کوتاه بود تا بتونید عملیاتCRUD رو روی دیتابیس با استفاده از کوئری بیلدر فریم ورک Yii انجام بدید .


    پ ن : کدها رو سریع نوشتم تست کنید اگه مشکلی داشت بگید .
    انشاالله جلسات بعد مطالب پر بارتر

  2. #2
    کاربر دائمی آواتار mohsen_31369
    تاریخ عضویت
    مهر 1390
    محل زندگی
    خانه
    پست
    195

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    با سلام
    Yii::app()->db->createCommand()
    ->delete('post','id=:id',array(':id'=>$_POST['id']));
    آیا در این قسمت نیاز به escape کردن ورودی نداریم؟

  3. #3
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    http://reza.biz
    پست
    858

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    خیر بصورت توکار اعمال میشود .
    از کد نویسی با Yii لذت ببرید .

  4. #4
    کاربر دائمی
    تاریخ عضویت
    آذر 1388
    محل زندگی
    مشهد
    پست
    553

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    کار رو راحت می کنه و برنامه از نظر نوع پایگاه داده مشکل خاصی ندارد .
    اما باید توجه داشت که روی عملکرد برنامه تاثیر داره ، زمانی که پردازش و سرعت اجرای برنامه اهمیت داشته باشد.
    به علاوه امکان پیاده سازی SQL های پیچیده در این روش مشکل و در مواردی غیر ممکن می باشد.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    http://reza.biz
    پست
    858

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    اما باید توجه داشت که روی عملکرد برنامه تاثیر داره ، زمانی که پردازش و سرعت اجرای برنامه اهمیت داشته باشد.
    به علاوه امکان پیاده سازی SQL های پیچیده در این روش مشکل و در مواردی غیر ممکن می باشد.
    منظورتون اینه استفاده از کوئری بیلدر ها ، اشتباست ؟

  6. #6

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    سلام. اینکه میگید سرعت بالا میره . الان چقدر ارزش اینو داره که ما بیاییم سایت یا نرم افزار رو به این صورت بکار ببریم و از اکتیو رکورد استفاده نکنیم؟ ممکنه اکتیو رکورد به ارزشش بیرزه که ازش استفاده کنیم نه؟

  7. #7
    کاربر جدید آواتار shgn_java
    تاریخ عضویت
    اردیبهشت 1387
    محل زندگی
    مشهد
    پست
    8

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    سلام آقا رضا.
    از این کوئری بیلدر کجا باید استفاده کرد؟
    آخه کلاس های مدل اکثرا از ActiveRecord اکستند شده اند.

  8. #8
    کاربر دائمی
    تاریخ عضویت
    دی 1389
    محل زندگی
    اصفهان
    سن
    35
    پست
    126

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    با سلام
    قبل از شروع حرف هام بگم که هیچ منظوری نداشته و نظر شخصی خودم را بیان می کنم.
    همانطور که در تاپیک آموزش شی گرایی yii نوشتم، ما در لایه ی مدل دو نوع فرم داریم یا فرم هایی که اطلاعات استاتیک رو می گیرند یا فرم های که از ActiveRecord اکستند شده اند که اطلاعات را با بانک اطلاعاتی تعامل می دهند، و هیچ ربطی به سرعت تبادل ندارد.
    ببینید دوستان در جاهایی که ما نیاز به ساخت و اجرای query خاصی هستیم ما از query builder استفاده می کنیم اما جاهایی که wizard جوابگو هست نیازی به این کار نیست چرا؟ چون که فکر می کنید پشت همین کلاس ActiveRecord چه کد هایی نوشته شده است؟
    من بازهم تاکید می کنم فریم ورک yii یک فریم ورک ایزوله شده هست. همه چیز تست شده است و امتحان خود را پس داده است تا license های مورد نظر را کسب کرده، نمی تواینم بگوییم کدام بهتر است یا کدام بدتر هر کدام کاربرد خاص خود را در جای مورد نظر خود دارد. query builder در جاهایی که دستورات sql پیچیده می شود کاربرد دارد نه اینکه جایگزین Active Record شود.
    موفق و سربلند باشید

  9. #9
    کاربر دائمی
    تاریخ عضویت
    آبان 1390
    محل زندگی
    http://reza.biz
    پست
    858

    نقل قول: عملیات CRUD با استفاده از کوئری بیلدرها در فریم ورک Yii

    سلام. اینکه میگید سرعت بالا میره . الان چقدر ارزش اینو داره که ما بیاییم سایت یا نرم افزار رو به این صورت بکار ببریم و از اکتیو رکورد استفاده نکنیم؟ ممکنه اکتیو رکورد به ارزشش بیرزه که ازش استفاده کنیم نه؟
    ابزارهای مشابه کارهای مشابهی انجام میدن ، بهتره با توجه به نوع نیاز از یکیشون یا همشون استفاده بشه .
    من بیس کارهام از ActiveRecord استفاده میکنم اما مثلا برای وقتی که لازمه فیلد مبلغ از رکورد یوزر رو تغییر بدم ، به جای اینکه بیام یک بار find کنم و بعد save که جمعا میشه دو کوئری ، فقط یکبار از متد update کوئری بلیدر استفاده میکنم .
    درسته الان میگید اینم update داره ولی بهرحال دیگه دیگه ...
    یا جاهایی که نیاز هست تراکنش رو دیتابیس باشه من از کوئری بیلدر استفاده میکنم .

    سلام آقا رضا.
    از این کوئری بیلدر کجا باید استفاده کرد؟
    آخه کلاس های مدل اکثرا از ActiveRecord اکستند شده اند.
    همه جا میشه استفاده کرد .

    همانطور که در تاپیک آموزش شی گرایی yii نوشتم، ما در لایه ی مدل دو نوع فرم داریم یا فرم هایی که اطلاعات استاتیک رو می گیرند یا فرم های که از ActiveRecord اکستند شده اند که اطلاعات را با بانک اطلاعاتی تعامل می دهند، و هیچ ربطی به سرعت تبادل ندارد.
    دوست عزیز ، اکتیو رکورد Yii ، حجم اطلاعات بیشتری رو تبادل میکنه ، برای مثال یک آپدید ساده نیازمند واکشی تمامی فیلد ها و ذخیره سازی دوباره تمامی فیلدها میشه اما در کوئری بیلدر متد آپدید فقط اون فیلد تغییر میکنه ، پس سریعتره .
    درسته میشه با کمی کدنویسی بیشتر اکتیو رکورد رو هم به همین شکل پیاده کرد اما کوئری بیلدر Yii هم به درد بخوره ، پس زیاد دنبال مقایسه این دو تا نگردید .
    در آخر با این جملتون موافقم
    نمی تواینم بگوییم کدام بهتر است یا کدام بدتر هر کدام کاربرد خاص خود را در جای مورد نظر خود دارد. query builder در جاهایی که دستورات sql پیچیده می شود کاربرد دارد نه اینکه جایگزین Active Record شود.

تاپیک های مشابه

  1. سوال: چگونگی اعمال عملیات CRUD در GridView هنگام استفاده از Inner Join
    نوشته شده توسط NasimBamdad در بخش C#‎‎
    پاسخ: 3
    آخرین پست: چهارشنبه 26 مرداد 1390, 23:56 عصر
  2. پاسخ: 3
    آخرین پست: پنج شنبه 12 شهریور 1388, 13:14 عصر
  3. برنامه سه لایه و استفاده از کوئری
    نوشته شده توسط حمیدرضاصادقیان در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 11
    آخرین پست: جمعه 18 اردیبهشت 1388, 23:12 عصر
  4. چگونگی استفاده از کوئری های اس کیو ال 2005 در برنامه
    نوشته شده توسط man_iran در بخش دسترسی به داده ها (ADO.Net و LINQ و ...)
    پاسخ: 5
    آخرین پست: دوشنبه 01 مهر 1387, 20:40 عصر
  5. استفاده از کامپوننتهای دات نت فریم ورک یک
    نوشته شده توسط بابک زواری در بخش VB.NET
    پاسخ: 14
    آخرین پست: چهارشنبه 03 اسفند 1384, 03:07 صبح

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •