توی فروشگاه اینترنتی برای دریافت گزارش فروش سلکت اول باید از جدولorder باشه یا orderproducts چون میخوام گزارش فروش هر کالا رو بده.
رتبه موضوع:
گزارش فروش محصولات (حل شد)
|
22-04-1395، 11:44 ق.ظ
خوب شما میخواین میزان فروش هر محصول رو نمایش بدین قاعدتاً با Orders کار دارین ولی از اونجا که ازطریق جدول واسط راحتتر میشه بدست آورد، میتونید با این جدول کار کنید. مثال:
// Yii 1.1 $orderCount = Orderproducts::model()->count(array( 'condition' => 'product_id=:productId', 'params' => array(':product_id' => $model->id) )); // Yii 2 $orderCount = Orderproducts::find()->where(['product_id' => $model->id])->count(); تشکر شده توسط: hamid
22-04-1395، 12:07 ب.ظ
پس اول با جدول کالاها باید وارد بشم؟
من چنتا کار میخوام انجام بدم یکی اینکه میزان فروش در یک بازه زمانی چقدر بوده.اگه از orderproducts وارد بشم چطوری به تاریخ فاکتور که توی orders هست دسترسی داشته باشم. یکم پیچیده میشه چون همزمان با دو سه تا جدول کار دارم.
22-04-1395، 12:24 ب.ظ
میتونید برای هرکدوم کوئری جدا بزنید یا از Join استفاده کنید. اگه با Yii1.1 کار میکنید از CDbCriteria و متد with استفاده کنید و اگه با Yii2 کار میکنید باید از ActiveQuery استفاده کنید.
هر کاری میکنم اون چیزی که میخوام بیرون نمیاد ازش. من میخوام اینکارو انجام بده $criteria = new CDbCriteria; $criteria->select = '*, SUM(o.amount) as amount_sum, SUM(oP.quantity) as quantity_sum'; $criteria->with = array('orderproducts'=>array('alias'=>'oP'), 'orders'=>array('alias'=>'o')); $criteria->together = true; $criteria->distinct = true; $criteria->group = 'o.id, oP.product_id, t.id'; if(!empty($_GET['email'])){ $email = CHtml::encode($_GET['email']); if($user = Users::model()->findByAttributes(array('email'=>$email))){ $criteria->addSearchCondition('o.user_id', $user->id); } } Tools::debug(Products::model()->findAll($criteria));
24-04-1395، 09:43 ق.ظ
گزارش فروش.
لیست کالاها بیاد و بگه کلا چن تا فروخته شده و کل فاکتورها رو جمع بزنه. یعنی amount رو از جدول orders و quantity رو از جدول orderproducts برای هر محصول و اگه خواستم بگم فلان کاربر چن تا خریده فقط لیست محصولاتی بیاد که اون خریده.
24-04-1395، 09:50 ق.ظ
خوب چندین مدل گزارش فروش داریم. دقیقاً چه گزارشی میخواین؟ گزارش فروش یک کالای خاص؟ گزارش خریدهای یک مشتری خاص؟ گزارش فروش همه کالاها به تفکیک هر کالا؟ لطفاً مشکل رو دقیق بیان کنید.
تشکر شده توسط: hamid
24-04-1395، 10:17 ق.ظ
در اصل من گزارش فروش همه کالاها به تفکیک هر کالا رو میخوام و یه امکان دیگه که میخوام داشته باشه اینه که اگه یک کاربر خاص رو انتخاب کردیم فقط کالاهایی که اون خریده گزارشش بیاد و همه کالاها نیان.
اینا رو هم گزاشتم توی مدل products 'orders' => array(self::MANY_MANY, 'Orders', 'orderproducts(product_id, order_id)'), 'orderproducts' => array(self::HAS_MANY, 'Orderproducts', 'product_id'),
24-04-1395، 10:39 ق.ظ
خوب شما برای اینکه بدونید یه کاربر چندتا فروش داشته میتونید اینطوری عمل کنید:
$orderCount = Orders::model()->count('user_id=:userId AND paid=1', array(':userId' => $user->id)); برای فروش هر محصول هم میتونید از ریلیشن STAT استفاده کنید: http://www.yiiframework.com/doc/guide/1....ical-query برای جمع فروش کل هم میتونید با Yii::app()->db کوئری دستی بزنید. تشکر شده توسط: hamid
ریلیشن STAT چی هست؟ کارش چیه؟ با HAS_MENY چه تفاوتی داره؟
24-04-1395، 11:24 ق.ظ
توی لینکی که گذاشتم توضیح داده. کارهای آماری انجام میده که در حالت پیشفرض بجای اینکه خود رکوردهای وابسته رو برگردونه تعدادشون رو اعلام میکنه ولی میشه تغییرش داد طوری که بعنوان مثال مجموع یا میانگین ستون خاصی رو محاسبه و اعلام کنه.
24-04-1395، 11:28 ق.ظ
این درسته؟
'quantityCount'=>array(self::STAT, 'Orderproducts', 'product_id'),
24-04-1395، 11:31 ق.ظ
خیر. این فقط داره میگه چند رکورد برای این محصول توی جدول Orderproducts وجود داشته. نمیاد فیلد quantity اونها رو جمع بزنه. درواقع داره میگه که این محصول توی چندتا فاکتور ثبت شده.
تشکر شده توسط: hamid
24-04-1395، 11:33 ق.ظ
لینکی که دادم رو به دقت بخونید. انتهای همین بخش STAT توضیح داده که چطور کاستومایزش کنید.
تشکر شده توسط: hamid
|
|
کاربران در حال بازدید این موضوع: 1 مهمان