12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- <?php
- /**
- * FecShop file.
- *
- * @link http://www.fecshop.com/
- * @copyright Copyright (c) 2016 FecShop Software LLC
- * @license http://www.fecshop.com/license/
- */
- namespace fecshop\models\mongodb;
- use yii\base\InvalidValueException;
- use yii\mongodb\ActiveRecord;
- /**
- * @author Terry Zhao <2358269014@qq.com>
- * @since 1.0
- */
- class Search extends ActiveRecord
- {
- /**
- * 语言,在使用model之前必须设置语言,否则报错。
- */
- public static $_lang;
- public static $_filterColumns;
- /**
- * mongodb collection 的名字,相当于mysql的table name
- */
- public static function collectionName()
- {
- if (self::$_lang) {
- return 'full_search_product_'.self::$_lang;
- } else {
- //throw new InvalidValueException('search class $_lang is empty, you must set search model class variable $_lang before use it');
- return 'full_search_product_no_lang';
- }
- }
- /**
- * mongodb是没有表结构的,因此不能像mysql那样取出来表结构的字段作为model的属性
- * 因此,需要自己定义model的属性,下面的方法就是这个作用
- */
- public function attributes()
- {
- $origin = [
- '_id',
- 'product_id',
- 'name',
- 'spu',
- 'sku',
- 'score',
- 'status',
- 'is_in_stock',
- 'url_key',
- 'price',
- 'cost_price',
- 'special_price',
- 'special_from',
- 'special_to',
- 'final_price', // 算出来的最终价格。这个通过脚本赋值。
- 'image',
- 'short_description',
- 'description',
- 'created_at',
- 'sync_updated_at', // 同步产品表信息到搜索表的时间戳。
- ];
- if (is_array(self::$_filterColumns) && !empty(self::$_filterColumns)) {
- $origin = array_merge($origin, self::$_filterColumns);
- $origin = array_unique($origin);
- }
- return $origin;
- }
- }
|