mongodb 在yii2 框架中的使用(本人在框架中做了功能扩展,非非官方下载的yii2的操作)


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   ]  ]);
















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值