| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- <?php
- namespace app\common\model\ps;
- use app\common\library\ps\FactoryContext;
- use think\Model;
- /**
- * 工厂隔离基类。会员请求自动带 factory_id,后台超管不限制。
- */
- class FactoryModel extends Model
- {
- protected $autoWriteTimestamp = 'int';
- protected $createTime = 'createtime';
- protected $updateTime = 'updatetime';
- /**
- * 全局查询范围
- * @param \think\db\Query $query
- */
- protected function base($query)
- {
- if (FactoryContext::bypass()) {
- return;
- }
- $factoryId = FactoryContext::id();
- // 不要在 base() 里调用 getTable():会再次初始化查询导致无限递归,PHP-CGI 直接崩溃。
- $query->where('factory_id', $factoryId > 0 ? $factoryId : -1);
- }
- protected static function init()
- {
- static::beforeInsert(function ($row) {
- if (FactoryContext::bypass()) {
- return;
- }
- if (!isset($row['factory_id']) || !$row['factory_id']) {
- $row['factory_id'] = FactoryContext::requireId();
- }
- });
- }
- }
|