|
|
@@ -3,6 +3,7 @@
|
|
|
namespace common\base\models;
|
|
|
|
|
|
use common\components\util;
|
|
|
+use Yii;
|
|
|
use yii\db\ActiveRecord;
|
|
|
|
|
|
class Base extends ActiveRecord
|
|
|
@@ -184,12 +185,25 @@ class Base extends ActiveRecord
|
|
|
* @param int|string $id 主键ID
|
|
|
* @param bool $returnObject 是否返回对象
|
|
|
* @param string|array $field 查询字段
|
|
|
+ * @param bool $reverseExclude 是否反向排除字段(传入的字段不查询,其他字段都查询出来),传 true 则反向排除,false 则正向排除,默认 false
|
|
|
* @return array|ActiveRecord|null
|
|
|
* @throws \Exception
|
|
|
*/
|
|
|
- public function getById($id, $returnObject = false, $field = '*')
|
|
|
+ public function getById($id, $returnObject = false, $field = '*', $reverseExclude = false)
|
|
|
{
|
|
|
- $query = $this->conditionQuery(['id' => $id])->select($field);
|
|
|
+ $selectField = '*';
|
|
|
+ if (!empty($field) && $field !== '*' && $reverseExclude == true) {
|
|
|
+ $excludeFields = is_array($field) ? $field : array_map('trim', explode(',', $field));
|
|
|
+ $allFields = $this->getFields();
|
|
|
+ $selectField = array_values(array_diff($allFields, $excludeFields));
|
|
|
+ if (empty($selectField)) {
|
|
|
+ Yii::error('getById: selectField is empty');
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ } else if (!empty($field) && $field !== '*' && $reverseExclude == false) {
|
|
|
+ $selectField = $field;
|
|
|
+ }
|
|
|
+ $query = $this->conditionQuery(['id' => $id])->select($selectField);
|
|
|
if ($returnObject == false) {
|
|
|
return $query->asArray()->one();
|
|
|
} else {
|