yii原始碼三 db

2022-03-14 05:07:37 字數 2580 閱讀 5252

《ar》

實現原理:首先一套__sleep(),__get(),__set(),__isset(),__unset(),__call()魔術方法,來處理model和model屬性。

public function getrelated($name,$refresh=false,$params=array()){}

對該方法,有一段很重要的介紹如下:

* returns the related record(s).

* this method will return the related record(s) of the current record.

* if the relation is has_one or belongs_to, it will return a single object

* or null if the object does not exist.

* if the relation is has_many or many_many, it will return an array of objects

* or an empty array.

public function primarykey(){}

如何表設定了主鍵,則返回null,不需要覆蓋該方法;否則返回array(),且需要覆蓋該方法。

《schema》

cdbconnection:

path:/framework/db/cdbconnection.php

overview:cdbconnection represents a connection to a database.

工作原理:cdbconnection works together with cdbcommand, cdbdatareader and cdbtransaction to provide data access to various dbms。且基於pdo擴充套件。

首先用$connection = new cdbconnection($dsn,$username,$password)建立乙個連線例項,然後呼叫$connection->active=true啟動連線。

用法:1.建立db例項並建立連線:

$connection=new cdbconnection($dsn,$username,$password

);$connection->active=true; //

建立連線

2.執行sql語句:

$command=$connection->createcommand($sqlstatement

);$command->execute(); //

執行非查詢語句(insert,delete,update)

$reader=$command->query();//

執行查詢語句(select)

備註:預處理和繫結引數用法:

$command=$connection->createcommand($sqlstatement

);$command->bindparam($name1,$value1

);$command->bindparam($name2,$value2

);$command->execute();

3.獲取結果:

foreach($reader

as$row

)

4.事務:

$transaction=$connection->begintransaction();

trycatch(exception

$e)

array

( 'components'=>array

( 'db'=>array

( 'class'=>'cdbconnection',

'connectionstring'=>'sqlite:path/to/dbfile',),),)

cdbcommandbuilder:

path:/framework/db/schema/cdbcommandbuilder.php

overview:provides basic methods to create query commands for tables.

cdbdatareader:

path:/framework/db/schema/cdbdatareader.php

overview:represents a forward-only stream of rows from a query result set.

cdbtransaction:

path:/framework/db/schema/cdbtransaction.php

overview:a db transaction.

$transaction=$connection->begintransaction();

trycatch(exception

$e)

yii原始碼三 db

ar 實現原理 首先一套 sleep get set isset unset call 魔術方法,來處理model和model屬性。public function getrelated name,refresh false,params array 對該方法,有一段很重要的介紹如下 returns ...

Yii原始碼解讀 別名

設定別名的目的 特殊的變數常量 yii baseyii aliases儲存整個yii應用的所有別名。webroot web最後乙個藏有別名的地方 verdor yiisoft extensions.phpyii aliases來儲存別名 yii setalias alias path 來定義別名。這...

Yii原始碼解讀 類自動載入

yii的類自動載入,依賴於php的spl autoload register 註冊乙個自己的自動載入函式 autoloader 並插入到自動載入函式棧的最前面,確保yii的autoloader會被最先呼叫。require dir vendor autoload.php require dir ven...