تالار گفتمان nCIS.ir

نسخه‌ی کامل: جمع تعداد خرید یک محصول (حل شد)
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
صفحات: 1 2
سلام
من جدولی دارم به اسم OrderProducts که تعداد محصولاتی که در هر سفارش هست رو ذخیره میکنه و سه تا فیلد داره :

order_id
product_id
quantity
دو فیلد اول به جداول مختص خودشون وصل میشن ..

چجوری میتونم جمع کل تعداد خرید های یک محصول رو بخونم ...
مثلا محصول شماره 1 یه بار 3 تا خرید داشته .. یه بار یه دونه ... در حال حاضر همون ردیف اول رو برام نشون میده یعنی 3 ..
یه فیلد public به مدل OrderProducts اضافه کنید به اسم total$ و بعد، با این کد تعداد خریدهای یه محصول رو بدست بیارین:
$total = Orderproducts::model()->find(array(
    'select' => 'sum(quantity) as total',
    'condition' => product_id=:pid',
    'params' => array(':pid'=>$product->id),
))->total;
متاسفانه خطا میده و نمیتونم دلیلش رو پیدا کنم ..
پیغام خطایی که میده چیه؟
نقل قول:
Parse error: syntax error, unexpected '(', expecting ',' or ';' in C:\xampp\htdocs\mediabase\protected\controllers\ProductsController.php on line 5

سیستم انجمن بک اسلش ها رو حذف میکنه
دوبار بک اسلش بزنید.
خوب خطا داره میگه توی خط 5 ProductsController انتظار پرانتز باز نداشته. کدتون رو چک کنید.
public $total = Orderproducts::model()->find(array(
        'select' => 'sum(quantity) as total',
    'condition' => 'product_id=:pid',
    'params' => array(':pid'=>$product->id)))->total;

این کد منه ...
خوب این اشتباهه. توی مدل فقط باید بنویسید:
public $total;

و دستوری که گفتم رو توی کنترلر بنویسید.
نقل قول:

Parse error: syntax error, unexpected 'Orderproducts' (T_STRING), expecting function (T_FUNCTION) in C:\xampp\htdocs\mediabase\protected\controllers\ProductsController.php on line 5
این خطا رو میده ...
وقتی خطا میده، کدی که گذاشتین رو هم بنویسید. بعد این چرا داره تو خط 5 خطا میده؟ فیلد رو توی مدل تعریف کنید و دقیقاً کدی که گفتم رو توی اکشنی که میخواین جمع فروش کالاها رو داشته باشین بنویسید. خارج از متدها ننویسین.
خب این خطا مشکلش حل شد ..
حالا مشکلی که پیش اومده اینه که چیزی بر نمیگردونه ..
من فیلد total رو تعریف کردم توی مدل Orderproducts

این کد هم توی کنترلر تعریف کردم :

public function actionView($id)
    {
        $products = $this->loadModel($id);

        Orderproducts::model()->find(array(
            'select' => 'sum(quantity) as total',
            'condition' => 'product_id=:pid',
            'params' => array(':pid' => $products->id)))->total;
}

توی View هم با این کد سعی میکنم total رو نمایش بدم :

echo Orderproducts::model()->total;

اما چیزی بر نمیگردونه .. فقط با print_r یه 1 چاپ کرد! که البته اشتباهه ..
نه نباید اینطوری کار کنید. باید این شکلی باشه:

توی کنترلر:
public function actionView($id)
{
    $model = $this->loadModel($id);
    $total = Orderproducts::model()->find(array(
        'select' => 'sum(quantity) as total',
        'condition' => 'product_id=:pid',
        'params' => array(':pid' => $products->id)
    ))->total;
    $this->render('view', compact('model', 'total'));
}

و توی ویو:
echo $total;
خب این کار رو هم انجام دادم و این خطا رو داد :

کد:
Error 500
Undefined variable: total
متغیر total$ رو مطمئنید برای ویو فرستادین؟ اگه توی ویو، یه ویوی فرعی رو با renderPartial صدا زدین، دوباره باید total$ رو برای اونهم بفرستین.
صفحات: 1 2