<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                首先看完整代碼 然后分部分解釋 CommentModel.php ~~~ <?php namespace plugins\d_comment\model; use think\Model; class CommentModel extends Model { /** * 關聯 user表 * @return $this */ public function user() { return $this->belongsTo('UserModel', 'user_id')->setEagerlyType(1); } /** * 關聯 user表 * @return $this */ public function toUser() { return $this->belongsTo('UserModel', 'to_user_id')->setEagerlyType(1); } /** * content 自動轉化 * @param $value * @return string */ public function getContentAttr($value) { return cmf_replace_content_file_url(htmlspecialchars_decode($value)); } /** * content 自動轉化 * @param $value * @return string */ public function setContentAttr($value) { $config = \HTMLPurifier_Config::createDefault(); if (!file_exists(RUNTIME_PATH . 'HTMLPurifier_DefinitionCache_Serializer')) { mkdir(RUNTIME_PATH . 'HTMLPurifier_DefinitionCache_Serializer'); } $config->set('Cache.SerializerPath', RUNTIME_PATH . 'HTMLPurifier_DefinitionCache_Serializer'); $purifier = new \HTMLPurifier($config); $cleanHtml = $purifier->purify(cmf_replace_content_file_url(htmlspecialchars_decode($value), true)); return htmlspecialchars($cleanHtml); } } ~~~ 解釋部分: ~~~ /** * 關聯 user表 * @return $this */ public function user() { return $this->belongsTo('UserModel', 'user_id')->setEagerlyType(1); } /** * 關聯 user表 * @return $this */ public function toUser() { return $this->belongsTo('UserModel', 'to_user_id')->setEagerlyType(1); } ~~~ 首先我們定義了兩個方法,用來取得用戶表信息。 對應Comment表的user_id,to_user_id這兩個外鍵字段 對于hasMany的講解 [thinkphp一對多關聯](http://www.hmoore.net/manual/thinkphp5/142358) setEagerlyType 設置預載入方式 $type 預載入方式 0 JOIN查詢 1 IN查詢 [in和join的效率哪個高](http://blog.csdn.net/qq_33290787/article/details/51931261) ~~~ public function getContentAttr($value) { return cmf_replace_content_file_url(htmlspecialchars_decode($value)); } ~~~ PHP htmlspecialchars_decode() 函數 htmlspecialchars_decode() 函數是 htmlspecialchars() 函數的反函數。 htmlspecialchars_decode() 函數把一些預定義的 HTML 實體轉換為字符。 > > 替換編輯器內容中的文件地址 > @param string $content 編輯器內容 > @param boolean $isForDbSave true:表示把絕對地址換成相對地址,用于數據庫保存,false:表示把相對地址換成絕對地址用于界面顯示 > @return string > > function cmf_replace_content_file_url($content, $isForDbSave = false) ~~~ public function setContentAttr($value) { $config = \HTMLPurifier_Config::createDefault(); if (!file_exists(RUNTIME_PATH . 'HTMLPurifier_DefinitionCache_Serializer')) { mkdir(RUNTIME_PATH . 'HTMLPurifier_DefinitionCache_Serializer'); } $config->set('Cache.SerializerPath', RUNTIME_PATH . 'HTMLPurifier_DefinitionCache_Serializer'); $purifier = new \HTMLPurifier($config); $cleanHtml = $purifier->purify(cmf_replace_content_file_url(htmlspecialchars_decode($value), true)); return htmlspecialchars($cleanHtml); } ~~~ Cache.SerializerPath是 PHP富文本HTML過濾器(HTMLPurifier HTML)的一個配置參數 作用是存儲沒有斜杠的,被序列化的絕對路徑 htmlspecialchars php函數 把預定義的字符 "<" (小于)和 ">" (大于)轉換為 HTML 實體
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看