1. 程式人生 > >mongodb 在yii2 框架中的使用(本人在框架中做了功能擴充套件,非非官方下載的yii2的操作)

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
















相關推薦

mongodbyii2 框架的使用本人框架功能擴充套件非官方下載yii2操作

1. 在\common\mongo\中增加一個檔案,這個檔名使用mongodb中的表明作為名字 譬如:mongodb中collection的表名為:catalog_product 增加檔案  \common\mongo\catalog_product.php 檔案內部的結

ASP.NET Core框架揭祕持續更新

之前寫了一系列關於.NET Core/ASP.NET Core的文章,但是大都是針對RC版本。到了正式的RTM,很多地方都發生了改變,所以我會將之前釋出的文章針對正式版本的.NET Core 1.0進行改寫。除此之外,我還會撰寫一系列與此相關的文章,這些文章以ASP.NET Core為核心,我個人將它們分成三

專案框架搭建用到的第三方框架—3持續更新

專案框架搭建用到的第三方框架—3 QMUI_Android Git地址: https://github.com/QMUI/QMUI_Android 官網: https://qmuiteam.com/android/ Api說明地址 https://qmuitea

HTML5+Bootstrap後臺系統框架持續更新……

HTML5+Bootstrap後臺系統框架集(更新時間:2017年1月8日。持續更新中……)科普:Bootstrap (Web框架):Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。

mongoDB使用詳解在node使用

資料庫概念 資料庫:資料儲存的倉庫 資料庫就是為我們方便的管理資料的一個平臺,例如對資料的儲存、修改、查詢等都非常的方便。 資料庫分類 資料庫產品有很多,以下是一些常見的資料庫產品: MySQLOracleDB2SqlServerMongoDBetc. 資料庫沒有

TP5通過一個表去取另一個表的相對應的名稱

一個 數據庫實例 分享 tp5 nbsp 網頁 名稱 分享圖片 一個表 1.數據庫實例 2.控制器內,先使數據先使頁面(此控制器內為sign表格) 3.封裝一個方法(通過用戶id獲取名稱,此表為name表格的數據) 4.靜態頁面(調用name表格的內容,與sign表格

IIS https綁定主機頭方法可實現禁止直接通過IP訪問好像還可以實現IIS綁定多個https<是使用多個單域名證書多域名證書>

多個 nbsp app for iis 直接 fig protoc eight 步驟: 打開:%systemroot%\SYSTEM32\inetsrv\config\ 打開:applicationHost.config 查找:<binding protocol="

iOS開發-常用第三方開源框架介紹絕對夠你用

影象: 1.圖片瀏覽控制元件MWPhotoBrowser        實現了一個照片瀏覽器類似 iOS 自帶的相簿應用,可顯示來自手機的圖片或者是網路圖片,可自動從網路下載圖片並進行快取。可對圖片進行縮放等操作。       下載:https:

Android:android的框架區別網路框架、圖片非同步載入與快取框架、資料框架特點整理

在我們安卓開發中,很多繁瑣的程式碼會很頭疼,編寫程式的週期會增加,因此很多框架都冒出來了,我們在搞懂底層原理之時,我們更應該學會用一些優秀框架來解決複雜程式碼,和繁瑣的重寫程式碼。因為針對最簡單的case,我只需要提供request url,成功時的callba

Android筆記:Android開發應用框架彙總MVVP框架介紹

先來說一下常見的Android框架模式: MVC、MVP、MVVM 這三種框架中,我們耳熟能詳的就是MVC和MVP了吧,接下來我們簡單介紹一下: MVC View:XML佈局檔案。 Model:實體模型(資料的獲取、儲存、資料狀態變化)。 Cont

對linux下程式設計中用到的標頭檔案頭的一些定義及函式進行解譯本人使用過程中用到過的不明白的定義及函式

1、typedef unsigned long int pthread_t; 型別定義: typedef unsigned long int pthread_t; //come from /usr/include/bits/pthreadtypes.h 用途:pthread_t用於宣

MongoDB——》聚合查詢project、match、limit、skip、unwind、group、sort

版權宣告:本文為博主原創文章,無需授權即可轉載,甚至無需保留以上版權宣告,轉載時請務必註明作者。 https://blog.csdn.net/weixin_43453386/article/details/85065043 MongoDB——》聚合查詢(project、match、

在Java開發10年後推薦此框架顛覆Java應用

黑馬程式設計師 2018-12-07 10:47:22 為什麼說Spring Boot是顛覆性的呢?因為它徹底改變了Java應用開發的模式。 Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的

前端不懂編譯器再多框架也無力-JS 編譯器都啥?

在寫這篇文章之前,小編工作中從來沒有問過自己這個問題,不就是寫程式碼,編譯器將程式碼編輯成計算機能識別的 01 程式碼,有什麼好了解的。 其實不然,編譯器在將 JS 程式碼變成可執行程式碼,做了很多繁雜的工作,只有深入瞭解背後編譯的原理,我們才能寫出更優質的程式碼,瞭解各種前端框架背後的

在VM虛擬機器的centos7系統上安裝某軟體重啟後可以正常登陸但登陸後卻是黑屏什麼都看不到

解決辦法: 正常輸入密碼登陸 使用 ctrl+alt+f2 進入centos7的無介面狀態,輸入使用者名稱,密碼登陸 初始化X xinit 啟動X,進入GNOME startx 然後消失的桌面就出現了。 完畢! 如果重新開機

MANIFEST.INF!JAR規範 META-INF 目錄內容心得。順帶整理網上資料提供地址

Java 產品打包成 JAR 檔案,其中會在 META-INF 目錄下邊存在宣告檔案 MANIFEST.MF 。此檔案內容為 KEY: VALUE ,這樣的一行行內容。以下整理總結了各種標準規範中指定的 KEY 含義。 Manifest-Version     必有,但應該

javanew一個物件jvm哪些事情

new一個物件時Jvm做了哪些事情: 之前沒有進行過類載入(1)類載入並初始化類中的靜態屬性(賦預設值,如果靜態屬性有自己賦值,則顯示自己賦的值)                                          (2)執行靜態程式碼塊 之前進行過類載入,則

數組的方法連接,截取,刪除,插入,替換以及封裝一個函數

log clas span 選擇 數組遍歷 p s func 第一個 code 連接兩個數組;concat,形成一個新數組 數組1.concat(數組2,數組1) 返回值:數組 var arr1=[1,2], arr2=[3,4], arr3; arr3=arr1.con

用Html5/CSS3Winform一步一步教你搭建CefSharp開發環境附JavaScript異步調用C#例子及全部源代碼

轉載 界面設計 右鍵 異步 一個 由於 編寫 scrip 調用 本文為雞毛巾原創,原文地址:http://www.cnblogs.com/jimaojin/p/7077131.html,轉載請註明 CefSharp說白了就是Chromium瀏覽器的嵌入式核心,我們用此開發W

課堂練習條件、循環、函數定義、字符串操作

身份證 星期 rtl orm range 字符串操作 -1 mat card 畫五角星import turtle for i in range(5): turtle.forward(200) turtle.right(144)   畫同心圓 imp