
نوشته شده توسط
rezakho
عجب حرفی میزنید، Eloquent یک ORM هست، مثل ActiveRecord در یی، یعنی یک لفاف روی متدهای کار با پایگاه داده، اون موارد که من توی پست قبلی گفتم موارد اختلافی بود، وگرنه اون ساختار واسط شی گرایی رو به هیچ وجه از دست نداده و هنوز خیلی چیزهاش مونده، ضمن اینکه فکر میکنید ساختار داخلی AR در یی چه شکلیه؟!
در یی هم این اتفاق میافته، یعنی شما از AR استفاده میکنید، AR داده ها رو به QB میده و اونجا SQL اجرا میشه و روند معکوس اجرا میشه دوباره شما با شی سر و کار دارید.
بهرحال وقتی توی Eloquent هم همه کارها دقیقاً مثل همون QB انجام میشه و هیچ ساده سازی انجام نشده، عملاً یک ساختار اضافه است و کاری بیشتر از یک Alias انجام نداده. کاری به پشت پرده ندارم که AR هم داره با QB کار میکنه یا نه ولی بهرحال وقتی توی Yii با QB میگیم:
Yii::app()->db->createCommand()->from('users')->where('id=1')->delete();
و توی AR میگیم:
Users::model()->deleteByPk(1);
به این میگن دو ساختار متفاوت. میدونم که لاراول هم چنین تغییراتی داره ولی اولاً شما بهش اشاره نکردین و ثانیاً اینکه دقیقاً به همون ساختار QB میشه توی Eloquent هم کار کرد رو مزیت شمردین درصورتی که حرف من اینه که وقتی میایم سراغ این ساختار، یعنی نمیخواستیم با QB کار کنیم و دلیلی نداره همون متدها با همون ساختار اینجا کپی بشن. این یعنی افزونگی در پیاده سازی فریمورک که مورد مثبت و خوبی نیست و به نوعی در برنامه نویسی یک ضعف محسوب میشه (هرگونه Duplicate ضعف محسوب میشه - چه در طراحی دیتابیس که با مواردی مثل نرمالسازی باید جلوی اینکار رو گرفت و چه در کدنویسی). امیدوارم این حرفم رو تأیید کنید.