DeviceRepository.php 2.57 KB
<?php

namespace domain\device;

use domain\device\models\CreateBatch    as CreateBatchModel;
use domain\device\models\Device         as DeviceModel;

class DeviceRepository
{
    /**
     * @param $where
     * @return array|\yii\db\ActiveRecord[]
     */
    static function getList($where, $limit = 0, $offset = 0)
    {
        $deviceFind = DeviceModel::find();
        $deviceFind->alias('a');
        $deviceFind->select(['a.*', 'm.name as manufacture','p.name as project','pd.name as production','mo.name as model']);
        $deviceFind->leftJoin(CreateBatchModel::tableName().' b','b.id = a.batch_id');
        $deviceFind->leftJoin('manufacture as m', 'm.id = b.manufacture_id');
        $deviceFind->leftJoin('project as p', 'p.id = b.project_id');
        $deviceFind->leftJoin('model as mo', 'mo.id = b.model_id');
        $deviceFind->leftJoin('production as pd', 'pd.id = b.production_id');

        $deviceFind->where($where);
        $deviceFind->orderBy('created_at desc');
        $deviceFind->asArray();
        if ($offset) {
            $deviceFind->offset($offset);
        }
        if ($limit) {
            $deviceFind->limit($limit);
        }
        $all = $deviceFind->all();

        return $all;
    }

    /**
     * @param $where
     * @return int|string
     */
    static function getListCount($where)
    {
        $deviceFind = DeviceModel::find();
        $deviceFind->alias('a');
        $deviceFind->leftJoin(CreateBatchModel::tableName().' b','b.id = a.batch_id');
        $deviceFind->leftJoin('manufacture as m', 'm.id = b.manufacture_id');
        $deviceFind->leftJoin('project as p', 'p.id = b.project_id');
        $deviceFind->leftJoin('model as mo', 'mo.id = b.model_id');
        $deviceFind->leftJoin('production as pd', 'pd.id = b.production_id');
        $deviceFind->where($where);
        $all = $deviceFind->count();

        return $all;
    }

    /**
     * @param $condition
     * @return null|static
     */
    static function findOne($condition)
    {
        return DeviceModel::findOne($condition);
    }

    /**
     * @param $condition
     * @return array|\yii\db\ActiveRecord[]
     */
    static function findAll($condition)
    {
        $deviceModel = DeviceModel::find();
        $deviceModel->where($condition);
        $list = $deviceModel->all();
        return $list;
    }

    /**
     * @param $condition
     * @return int|string
     */
    static function rowsCount($condition)
    {
        $deviceModel = DeviceModel::find();
        $deviceModel->where($condition);
        $count = $deviceModel->count();
        return $count;
    }
}