关于 Yii 2 统一返回数据和公共查询条件问题 [ 2.0 版本 ]
Yii2 的话有两个问题一直不太明白,还望大牛们不吝赐教 。
数据的统一返回处理 。
我现在的处理是每个模型写fields
方法,
但是这个规则 只有findOne
和findAll
有用 ,find()->where()
这种就不行 。 是不是我理解的不对? 你们都是怎么做的?
如有一个模型A 里面有public function fields(){ return ["id"] ; }
A::findOne()
返回的结果中只有id ,是想要的。
A::find()
返回的是所有字段,不是想要的。每次查询都带上一个固定的条件 。 需求是这样,表B中的所有数据是通过
user_id
来区分数据是哪个用户的,每次查询的时候都需要带上user_id
这个条件,但是每个方法里面都写一下很累赘,有没有好的方法?
最佳答案
-
两个问题有同一个解决方法:
模型类 A:public static function find() { return new AQuery(get_called_class()); }
AQuery:
class AQuery extends \yii\db\ActiveQuery { public function customSelect() { return $this->select(['id', 'name']); } public function findByUser() { return $this->andWhere(['user_id' => \Yii::$app->user->id]); } }
使用方法:
$model = A::find()->customSelect()->findByUser()->all(); $model = A::find()->customSelect()->findByUser()->andWhere(...)->one();
晦涩de咚 觉得很赞
其他 0 个回答
没有找到数据。
wlz
注册时间:2018-05-03
最后登录:2019-01-08
在线时长:4小时11分
最后登录:2019-01-08
在线时长:4小时11分
- 粉丝0
- 金钱10
- 威望0
- 积分50