1.
在\common\mongo\中增加一个文件,这个文件名使用mongodb中的表明作为名字
譬如:mongodb中collection的表名为:catalog_product
增加文件 \common\mongo\catalog_product.php
文件内部的结构:
<?php
return [
//array作为识别,因此,不可以吧mongodb的字段定义为array
'catalog_product'=>[
'collection'=>'catalog_product',
'file'=>'catalog/product',
'info'=>[
'sku'=>'string',
'weight'=>'float',
'status'=>'float',
'created_at'=>'date',
'url_key'=>'string',
'visibility'=>'float',
'price'=>'float',
'special_price'=>'float',
'special_from_date'=>'date',
'special_to_date'=>'date',
'image'=>'string',
'media_gallery'=>[
'array'=>[
'imgurl'=>'string',
'label'=>'string',
'sort_order'=>'string',
]
],
'sell_number'=>'int',
'qty'=>'int',
'is_in_stock'=>'int',
'categories'=>'arrayInt',
],
]
];
因为这个文件是为了定义mongodb的字段类型,在操作数据库的时候,自动转换类型
因此string的可以免定义的
file定义的是模型文件路径,catalog/product代表对应的模型路径为:\common\models\catalog\Product.php
info定义的是字段的类型,string代表是字符类型,float代表的是浮点类型,int代表是整型
date代表的是日期类型,arrayInt代表是整型数组,如果是多维数组,可以参考:media_gallery
如果多维数组中都是字符串类型,可以直接省略定义,因为字符串类型可以省略转换。
<?php
namespace common\models\catalog;
use Yii;
use backend\models\core\Mongodb;
class Product extends Mongodb
{
public function init(){
parent::init();
}
public function __construct($collection_name){
$this->_collection_name = $collection_name ;
}
}
此文件只需要把类名和namespace更改就好。
这样就可以直接调用使用了
在controller,block中,可以直接使用:
$model = $this->getModel('catalog_product');
$query = $this->getModelQeury('catalog_product');
在其他的地方可以通过Help类调用:
use common\models\core\Help;
$model = Help::getModel('catalog_product');
$query = Help::getModelQuery('catalog_product');
更新:
$data_one = $model::findOneConvert() 得到数据(数组)
$data_one['password'] = $password;
$data_one['first_name'] = $first_name;
$data_one['last_name'] = $last_name;
$model->save($data_one);
插入:
在mongodb中的更新和插入,只要看传入数组中是否存在_id,如果存在,则更新,如果不存在,则插入
$data_one['first_name'] = $first_name;
$data_one['last_name'] = $last_name;
$model->save($data_one);
查询:
$query->where(['_id' => ["?in"=>$productIds]]);
$query->limit = 10
$query->offset = 20
$query->orderBy = ['name'=>SORT_DESC]
$data = $query->all();
删除:
$model->remove( ['_id'=> ['?in'=> $ids_remove ] ]);