<menu id="ycqsw"></menu><nav id="ycqsw"><code id="ycqsw"></code></nav>
<dd id="ycqsw"><menu id="ycqsw"></menu></dd>
  • <nav id="ycqsw"></nav>
    <menu id="ycqsw"><strong id="ycqsw"></strong></menu>
    <xmp id="ycqsw"><nav id="ycqsw"></nav>
  • thinkphp最新版本是什么,thinkphp開發工具及搭建教程


    軟件更新丨ThinkPHP 發布 5.2 RC1 版本,諸多查詢改進

    點擊右上方,關注開源中國OSC頭條號,獲取最新技術資訊

    5.2在經過幾個月的測試版本迭代后,正式進入候選版本。之后的重點工作會是擴展以及文檔的完善。當然,不排除核心還有微調的可能。

    ThinkPHP5.2RC1版本繼上個版本beta3版本發布以來,主要更新如下:

    新特性

    支持FIND_IN_SET查詢

    增加了新的查詢表達式對FIND_IN_SET的支持,使用下面的查詢即可:

    Db::name('user')->where('group_list', 'find in set', 2)->select();

    增加了分區查詢支持

    增加了對分區的支持(需要MySQL5.6+版本),例如你對user表分了p1和p2兩個分區,你可以使用下面的查詢:

    Db::name('user')->partition('p1')->insert(['name' => 'think']);
    Db::name('user')->partition(['p1', 'p2'])->select();
    Db::name('user')->partition(['p1', 'p2'])->where('name', 'think')->update(['name' => 'thinkphp']);
    Db::name('user')->partition('p1')->where('name', 'think')->delete();

    增加了ON DUPLICATE UPDATE支持

    支持ON DUPLICATE UPDATE,例如:

    Db::name('user')->duplicate(['score' => 10])->insert(['name' => 'think']);

    增加extra方法設置查詢額外參數

    extra方法可以用于CURD查詢,例如:

    Db::name('user')->extra('IGNORE')->insert(['name' => 'think']);
    Db::name('user')->extra('DELAYED')->insert(['name' => 'think']);
    Db::name('user')->extra('SQL_BUFFER_RESULT')->select();

    新增單個數據改為使用更清晰和高效的INSERT SET語法,例如下面的查詢

    Db::name('user')->insert(['name' => 'think', 'score' => 100]);

    實際生成的SQL語句是

    INSERT INTO user SET `name` = 'think', `score` = 100

    增加whereFieldRaw查詢方法

    該方法用于對字段使用SQL函數查詢,例如:

    User::whereFieldRaw('date_format("create_time", "%Y")', '2019')->select();
    User::whereFieldRaw('date_format("create_time", "%Y")', '>', '2018')->select();

    Query類的update方法支持獲取模型的更新條件

    現在可以直接使用模型的查詢條件作為Db類update方法的數據更新條件,例如:

    $user = User::find(1);
    $user->field(['name'])->update(['name' => 'thinkphp']);

    數據集類增加快捷查詢(過濾)方法

    thinkCollection類增加whereLike/whereNotLike/whereIn/whereNotIn/whereBetween/whereNotBetween等快捷方法,用于更方便的進行數據篩選而替代使用不夠直觀的where方法。

    增加optimize:facade指令

    可以在本地開發的時候使用該指令為Facade類生成對應類的方法注釋。你只需要在定義Facade類的時候,在類的注釋中添加 @mixin 選項,例如使用@mixin thinkDb注釋后,使用optimize:facade指令后,就會在類的注釋中自動生成thinkDb類的相關public方法注釋,方便IDE自動提示,每個類的方法返回值類型最好明確指定(沒有返回值的則使用void),否則注釋中會使用mixed返回類型。

    增加新的表達式查詢解析擴展

    增加了新的thinkdbExpression類(原來的Expression類已經更改為Raw類)用于查詢表達式的擴展解析,你只需要自定義一個表達式解析類,例如:

    <?php
    namespace appcommonexpression;
    use thinkdbExpression;
    class Rlike extends Expression
    {
    /**
    * 分析查詢表達式
    *
    * @param Query $query 查詢對象
    * @param string $key
    * @param string $exp
    * @param string $field
    * @param integer $bindType
    * @return string
    */
    public function parse(Query $query, string $key, string $exp, string $field, int $bindType): string
    {
    if ($this->value instanceof Raw) {
    $value = $this->value->getValue();
    } else {
    $value = $this->value;
    }

    return $key .' RLIKE ' . $value ;
    }
    }

    現在我們就可以使用下面的查詢語法了:

    User::where('name', 'rlike', new appcommonexpressionRlike('^think'))->select();

    提供了關閉事件機制的方法

    如果你完全不需要使用事件機制,可以在入口文件中使用withEvent方法關閉事件功能。

    (new App())->withEvent(false)->run()->send();

    不過值得提醒的是,新版的路由功能、多語言支持和請求緩存功能都是利用了事件機制響應的。

    用法調整

    原來Query類的raw方法移動到Db類

    雖然用法上沒有改變,但Db::raw()方法的調用效率會更高一些。或者你可以直接使用新的助手函數raw替代Db::raw。

    原來的Expression類改為Raw類

    原來的thinkdbExpression類更改為thinkdbRaw類,更加貼切。

    多對多關聯的pivotDataName方法更名為name方法

    使用更加簡潔的name方法替代原來的pivotDataName方法。

    廢棄用法和參數

    取消Query類的extend方法

    取消了Query類的extend方法,如果需要擴展查詢方法,建議自定義Query類并繼承系統的thinkdbQuery類即可,然后在模型中定義query屬性或者配置數據庫連接的query參數為你的自定義類。

    取消Request類的hook方法

    由于不建議擴展Request類的方法,該方法已經在最新版本中取消。

    取消URL參數模式配置

    原來的URL參數模式配置參數url_param_type,統一使用參數/值的方式。

    更新日志

    • 改進Url類build方法
    • 修復獲取當前頁碼數據類型
    • 修正parseKey方法傳入數值的情況
    • 改進optimize:config指令對declare申明的支持
    • 取消URL參數模式配置
    • 增加optimize:facade指令用于生成facade類的方法注釋
    • 取消Query類的extend方法
    • 原來的Expression類更改為Raw類
    • 增加新的Expression類用于表達式查詢擴展
    • Collection類增加whereLike/whereNotLike/whereIn/whereNotIn/whereBetween/whereNotBetween等快捷方法
    • Query類的raw方法移動到Db類
    • 取消Request類的hook方法
    • 修正Route::view方法
    • 優化模型獲取器方法
    • 多對多關聯的pivotDataName方法更名為name方法
    • Query類增加partition/duplicate/extra方法
    • 改進mysql驅動支持分區和duplicate以及額外參數
    • mysql驅動的insert方法改用更清晰的insert set語法
    • 修正Event類bind屬性定義
    • 修正驗證類的append一處bug
    • 改進Query類update方法支持讀取模型的更新條件
    • 取消模型類的getUpdateWhere方法統一使用getWhere方法
    • 改進query類的fetchArray方法處理
    • 改進路由類取消app屬性
    • 增加thinkfacadeRuleName類
    • 增加whereFieldRaw查詢方法
    • 改進自動多應用名稱獲取
    • App類增加withEvent方法支持關閉事件機制
    • 改進Dispatch類對var_dump的支持
    • 改進hasMany的withCount自關聯
    • 修正純數字檢測參數類型轉換問題
    • 修正raw助手函數
    • mysql支持find_in_set查詢
    • 改進url方法對自動多應用的支持

    版權聲明:本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 舉報,一經查實,本站將立刻刪除。

    發表評論

    登錄后才能評論
    国产精品区一区二区免费