日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

laravel mysql save 后 查看 受影响行数_swoft2教程系列-mysql模型

發布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 laravel mysql save 后 查看 受影响行数_swoft2教程系列-mysql模型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

無論是基礎查詢還是高級查詢,實際都會依賴表實體,一個表字段和一個類屬性的關系通過映射實現,而對類的操作也就相當于在對數據表操作。Swoft 2.x 中實體類對比 1.x 使用起來更簡單,它兼容 Builder 查詢構造器所有的方法,使用實體類和查詢構造器的方法一致。

實體類不需要自己編寫,用 swoft 提供的命令行操作實現即可

注意

swoft的模型就是實體 Entity ,一個實體的結構對應一張數據表的結構。每一個實體的實例就是對應數據庫的一條記錄,因此不能使用 @Inject 注入。

創建模型實體

php bin/swoft entity:create --table=products,products_class  --pool=db.pool 

通過命令生成,命令參數:

  • exclude STRING Expect generate database table entity, alias is ‘exc’
  • field_prefix STRING 別名 “fp”,去除字段前綴,如:user_info 使用參數 —fp=user 生成的字段竟會變成 info
  • path STRING 生成實體存放路徑,默認:@app/Model/Entity
  • pool STRING 選擇數據庫連接池,默認:db.pool
  • remove_prefix STRING 別名 “rp”,去除表前綴生存實體,如:user_info 表生成的文件是 UserInfo.php,使用參數 —rp=user 生成是 Info.php
  • table STRING 選擇要生成實體的數據表,—table=products,member_info 會生成兩個指定表的實體
  • table_prefix STRING 別名 “tp”,生成實體去除表前綴如 table_prefix=products @Entity(table=”products_class”) 去除后 @Entity(table=”class”)
  • td STRING 生成實體的模版,默認: @devtool/devtool/resource/template
  • -y STRING 自動確認類似linux安裝命令的 -y

實體注解

@Entity

通過注解標簽 @Entity 指定類為實體類。

參數說明:

  • table:需映射的數據庫表名(必填)
  • pool:連接池,默認為 db.pool

@Column

通過注解標簽 @Column 指定成員屬性為字段名。如果字段未添加 @Column 標簽,那么在查詢時該列(字段)不會展示。即使新增字段也不會影響生產環境。

參數說明:

  • name:需映射的數據表字段名。默認值為成員屬性
  • prop:字段別名,僅在調用 toArray 方法時被轉換。使用 where 等子方法時仍需使用數據庫字段名
  • hidden:字段是否隱藏。僅在調用 toArray 方法時會被隱藏,但并不影響通過 getter 方法獲取。可以通過調用實體 addVisible 方法取消隱藏

說明:所有字段屬性,必須要有 getter 和 setter 方法,你可以使用 PhpStorm 快捷鍵 Alt + Insert (macOS 為 command + N 或 control + enter)根據屬性快速生成 getter 和 setter 方法。

若表字段名存在下劃線,類屬性需以 小駝峰 方式定義。例:字段名為 user_name,則屬性應當寫為 $userName。

@Id

該注解標簽指定成員屬性為主鍵。一個實體類僅能設置一個 @Id 注解標簽。

參數說明:

  • incrementing:是否為遞增主鍵,默認為 true

Prop 操作

  • Swoft 版本需 >= 2.0.6

模型支持使用 prop 直接操作,在上方示例實體類中,數據表字段 user_desc 的 prop 為 udesc,Swoft 底層會自動轉換,所以并不響應我們使用。

模型常用方法

獲取模型方法

$member = new Member($data);
$member = Member::new($data);

模型寫入數據庫方法

// 調用save()保存
$member = new Member();
$member->setUsername($username);
$member->setPasswd($passwd);
$res = $member->save();
// 調用save()保存,在獲取模型的時候填充數據
$member = Member::new($data);
$res = $member->save();
// 調用save()保存,使用fill填充數據
$member = Member::new();
$member->fill($data);
$res = $member->save();
// insertGetId() 保存獲取寫入數據庫返回的id
$res = Member::insertGetId($data);

模型獲取數據方法

// 獲取所有數據,只獲取id、username字段
Member::all(['id','username'])->toArray();
// 獲取所有數據,只獲取id、username字段
Member::get(['id','username'])->toArray();
// 根據逐漸id獲取單條數據
Member::find(1)->toArray();
// 跟all和get相比,更節省內存
Member::chunkById(10,function($member){/** @var Member $m */foreach($member as $m){echo $m->getUsername()."n";}
});

模型更新數據方法

Member::find(1)->update(['passwd' => $passwd]);
// 查找 username 等于 sunny 的記錄,替換成 sunnt007,如果記錄存在會更新,不存在新增
Member::updateOrCreate(['username'=>'wike'],['username'=>'wikenew']);
// 根據主鍵id更新數據
Member::modifyById(1,['username'=>'wike']);
// 查找 username 等于 sunny001 的記錄,替換成 002
Member::modify(['username'=>'wike'],['username'=>'wikenew']);

刪除方法

// 先執行find然后再delete
Member::find(1)->delete() 

聚合查詢方法

Member::min('id');
Member::max('id');
Member::sum('id');
Member::avg('id');
Member::count('id');

其他常用方法

來源:https://8code.net/index/index/article/id/60

以上內容希望幫助到大家,很多PHPer在進階的時候總會遇到一些問題和瓶頸,業務代碼寫多了沒有方向感,不知道該從那里入手去提升,對此我整理了一些資料,包括但不限于:分布式架構、高可擴展、高性能、高并發、服務器性能調優、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql優化、shell腳本、Docker、微服務、Nginx等多個知識點高級進階干貨需要的可以免費分享給大家,需要

PHP進階架構師>>>視頻、面試文檔免費獲取?shimo.im

或 者關注咱們下面的知乎專欄

PHP架構師圈子?zhuanlan.zhihu.com

總結

以上是生活随笔為你收集整理的laravel mysql save 后 查看 受影响行数_swoft2教程系列-mysql模型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。