關於模型中的幾個概念或知識點

2022-02-21 21:36:13 字數 1376 閱讀 8375

模型中的屬性可以像普通物件屬性一樣被訪問$model->attribute;也可以以陣列元素方式訪問$model[attribute]。

屬性標籤

獲取屬性標籤

// 顯示為 "name"

echo $model->getattributelabel('name');

給模型設定場景,有兩種方式

// 場景作為屬性來設定

$model = new user;

$model->scenario = 'login';

// 場景通過構造初始化配置來設定

$model = new user(['scenario' => 'login']);

可以給模型設定多個場景,如下圖:給user模型設定了登陸和註冊兩個應用場景

有時你想一條規則只在某個 場景 下應用,為此你可以指定規則的on屬性,如下所示:

public function rules()

或在控制器中這樣寫

$model = new contactform();

在場景中列出的屬性就是安全屬性,只有安全屬性才能被塊賦值。

[[yii\base\model::scenarios()]] 方法提供兩個用處:定義哪些屬性應被驗證,定義哪些屬性安全。 在某些情況下,你可能想驗證乙個屬性但不想讓他是安全的,可在scenarios()方法中屬性名加乙個驚嘆號 !。 例如像如下的secret屬性。

public function scenarios()

當模型在login場景下,三個屬性都會被驗證,但只有usernamepassword屬性會被塊賦值, 要對secret屬性賦值,必須像如下例子明確對它賦值。

$model->secret = $secret;

public function rules()

模型通常要匯出成不同格式,你可能想將模型的乙個集合轉成json或excel格式, 匯出過程可分解為兩個步驟,第一步,模型轉換成陣列;第二步,陣列轉換成所需要的格式。 你只需要關注第一步,因為第二步可被通用的資料轉換器如[[yii\web\jsonresponseformatter]]來完成。

將模型轉換為陣列最簡單的方式attributes屬性$arr = $model->attributes

更靈活強大的方式是通過toarray()方法,它是實現 restful風格的方式。 $model->toarray()

樹模型幾個知識點

id3無法處理連續特徵 c4.5可以處理連續特徵,用資訊增益率選擇 特徵,遇到連續特徵的時候,依次二分樣本,根據資訊增益獲得最佳分割點 id3和c4.5都只能處理分類問題,cart既能處理分類問題,又能處理回歸問題 cart分割點的選擇粒度更細,根據gini係數,選擇某個特徵的某個值作為分割點 分為...

關於防止sql注入的幾個知識點

1.pdo預處理是首選。你可以把他看成是要執行的sql的已經編譯過的模板,它可以用變數引數進行定製 它有兩個顯著優點 1.1 查詢僅需解析一次,但可以用相同或者不同引數執行多次。換句話說如果要以不同的引數執行同樣的語句執行多次,利用pdo可以大大降低應用程式的速度。1.2 提供給預處理的語句不需要攜...

C 的幾個知識點

1 陣列的氣泡排序 int nums new int int temp 0 for int j 0 j nums.length 1 j for int i 0 i nums.length i console.readkey 2 反轉語句 array.reverse nums for int i le...