1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      在Laravel中調(diào)用Model新增數(shù)據(jù)的示例分析

      這篇文章主要介紹了在Laravel中調(diào)用Model新增數(shù)據(jù)的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

      讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:域名注冊雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、河口網(wǎng)站維護、網(wǎng)站推廣。

      關(guān)于 PHP 的 new static 延遲靜態(tài)綁定,或者叫后期靜態(tài)綁定,在 Laravel 中遇到一個使用上的問題。如下,在 Laravel 中調(diào)用 Model 新增數(shù)據(jù)的時候,首先給 Model 加了一個獲取分表的方法:

      protected function addToMessage($msgType, $userID, $commentID, $replyCommentID, $replyUserID, $gameID)
      {
          if (!$userID) {
              return false;
          }
       
          $table = 't_message_' . hashID($userID, 100);
          $this->message->setTable($table)->create([
              'msg_type'         => $msgType,
              'user_id'          => $userID,
              'comment_id'       => $commentID,
              'reply_comment_id' => $replyCommentID,
              'reply_user_id'    => $replyUserID,
              'game_id'          => $gameID,
              'is_read'          => 0,
              'created_at'       => date('Y-m-d H:i:s'),
          ]);
          return true;
      }

      這里 setTable 方法是在 Model 里定義的獲取分表的方法:

      public function setTable($table)
      {
          $this->table = $table;
          return $this;
      }

      從報錯日志中發(fā)現(xiàn) $this->table 并沒有生效,但實際上在調(diào)用 create 方法之前打印表名的時候是期望的值,這里調(diào)用 create 方法為什么 $this->table 沒有被重置呢?

      這里 $this->message 是一個繼承 Model 類的模型類,其中 create 方法:

      public static function create(array $attributes = [])
      {
          $model = new static($attributes);
       
          $model->save();
       
          return $model;
      }

      位于 vendorlaravelframeworksrcIlluminateDatabaseEloquentModel.php Line 557.

      因為 Laravel 框架的這個 Model 類是一個 abstract 類型,PHP 中 abstract 類可以用 new static 后期靜態(tài)綁定的方式實例化,而 create 方法里 $model = new static($attributes) 實際上就是重新實例化了并返回,而調(diào)用者 Model 類沒有定義 table 屬性,所以這個時候 $this->table 是沒有值的。

      在Laravel中調(diào)用Model新增數(shù)據(jù)的示例分析

      解決辦法是用 save 方法即可,如圖所示。實際上 create 方法也調(diào)用了 save 方法。

      實驗

      一個抽象類 A,有個 create 方法,通過延遲靜態(tài)綁定實例化并返回。B 類繼承 A,test 方法中修改父類的 name 屬性。

      name = "Tony Tan";
              return $this;
          }
      }
       
      $obj1 = (new B)->test();
      $obj2 = (new B)->test()->create();
      var_dump($obj1);
      var_dump($obj2);

      結(jié)果顯示 $obj1 和 $obj2 這兩個實例都是 B 的實例,調(diào)用 test 方法屬性 name 改變了,但是調(diào)用 create 方法后,name 屬性并沒有改變。這也就是在本文中說的在 Lavarel 中遇到的場景。(這里如果把注釋打開,打印的 name 就是重寫的值)

      如果把抽象類 A 改成普通類,new static 改成 new self 的方式實例化,結(jié)果就不同了,打印的屬性 name 都是各自類的屬性。

      感謝你能夠認真閱讀完這篇文章,希望小編分享的“在Laravel中調(diào)用Model新增數(shù)據(jù)的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!


      本文題目:在Laravel中調(diào)用Model新增數(shù)據(jù)的示例分析
      網(wǎng)址分享:http://www.ef60e0e.cn/article/jeidih.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        玛曲县| 社会| 韶山市| 绥滨县| 龙口市| 三门县| 建宁县| 年辖:市辖区| 阿拉善右旗| 永春县| 铜梁县| 新源县| 璧山县| 绥滨县| 陈巴尔虎旗| 石泉县| 金溪县| 新沂市| 宣化县| 信丰县| 惠州市| 法库县| 中西区| 祁东县| 合作市| 永济市| 双柏县| 昭通市| 新龙县| 吴旗县| 阳泉市| 斗六市| 滨海县| 贵定县| 介休市| 辽源市| 林西县| 尉犁县| 育儿| 河北省| 荥阳市|