ThinkPHP 8 操作JSON數據

【圖書介紹】《ThinkPHP 8高效構建Web應用》-CSDN博客

《2025新書 ThinkPHP 8高效構建Web應用 編程與應用開發叢書 夏磊 清華大學出版社教材書籍 9787302678236 ThinkPHP 8高效構建Web應用》【摘要 書評 試讀】- 京東圖書

使用VS Code開發ThinkPHP項目-CSDN博客

編程與應用開發_夏天又到了的博客-CSDN博客

我們學習了通過調用json()方法來設置JSON字段。然而,每次操作JSON字段都需要調用json()方法顯得有些煩瑣,為了簡化這一過程,我們可以使用模型的$json屬性來直接進行操作,示例如下(讀者可以自行編寫一個簡單的控制器來測試示例):

<?php
namespace app\model;use think\Model;
class User extends Model
{protected $json = ['address'];protected $jsonAssoc = true; // 可選protected $jsonType = [ // 設置字段類型'address->code'	=>	'int'		];
}

上例中,$jsonAssoc屬性是用來控制JSON字段的返回類型,其默認值為false,返回對象形式,我們可以將$jsonAssoc屬性設置為true,使其通過數組方式操作JSON字段。

$jsonType字段和$type字段類似,用來指定JSON子字段的數據類型,在不指定的情況下,默認都視為STRING。上面的例子中,我們指定了address->code為整型。

1. 查詢操作

下面是一個查詢省份為北京市的用戶示例:

$user = User::where('address->province', '北京市')->find();
echo $user->username; 					// test
echo $user->address->code; 				// 100000
echo $user->address-> province; 		// 北京市
// 下面設置$jsonAssoc為true的示例
echo $user->address['code']; 			// 100000
echo $user->address['province']; 		// 北京市

在示例中,$user->address['code']中的“->”是訪問模型的address屬性,['code']是使用數組形式訪問address這個JSON屬性的code字段。

2. 更新操作

下面是一個更新用戶地址的示例:

$user = User::find(1);
$user->address->provice = '廣東省';
// 下面是設置$jsonAssoc為true的示例
$user->address = ['province' => '廣東省'
];
$user->save();

3. 插入操作

下面是一個新增用戶的示例:

$user = new User;
$user->address = new \StdClass();
$user->address->province = '北京市';
$user->save();
// 下面是設置$jsonAssoc為true的示例
$user = new User;
$user->address = ['province' => '北京市'
];
$user->save();

通過預先定義$json和$jsonAssoc字段,可以減少一部分重復調用json()方法的工作,進而提高開發效率。因此,我們建議各位讀者將其納入常見開發實踐中,使自己的開發更加高效!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/66973.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/66973.shtml
英文地址,請注明出處:http://en.pswp.cn/web/66973.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GD32F303 GCC 環境搭建

一、引言 在嵌入式開發領域&#xff0c;GD32F303 微控制器以其出色的性能和豐富的功能被廣泛應用。為了充分發揮其潛力&#xff0c;搭建一個高效的開發環境并深入理解項目構建過程至關重要。本文將詳細介紹如何基于 GCC 工具鏈搭建 GD32F303 的開發環境&#xff0c;重點聚焦于…

【C++】詳細講解繼承(下)

本篇來繼續說說繼承。上篇可移步至【C】詳細講解繼承&#xff08;上&#xff09; 1.繼承與友元 友元關系不能繼承 &#xff0c;也就是說基類友元不能訪問派?類私有和保護成員。 class Student;//前置聲明class Same //基類 { public:friend void Fun(const Same& p, con…

考研機試題:今年的第幾天

描述 輸入年、月、日&#xff0c;計算該天是本年的第幾天。 輸入描述: 包括三個整數年(1<Y<3000)、月(1<M<12)、日(1<D<31)。 輸出描述: 輸入可能有多組測試數據&#xff0c;對于每一組測試數據&#xff0c; 輸出一個整數&#xff0c;代表Input中的年、…

解鎖羅技鍵盤新技能:輕松鎖定功能鍵(羅技K580)

在使用羅技鍵盤的過程中&#xff0c;你是否曾因 F11、F12 功能鍵的默認設置與實際需求不符而感到困擾&#xff1f; 別擔心&#xff0c;今天就為大家分享一個簡單實用的小技巧 —— 鎖定羅技鍵盤的 F11、F12 功能鍵&#xff0c;讓你的操作更加得心應手&#xff01; 通常情況下…

Flink把kafa數據寫入Doris的N種方法及對比。

用Flink+Doris來開發實時數倉,首要解決是如何接入kafka實時流,下面是參考Doris官方文檔和代碼,在自己項目開發的實踐中總結,包括一些容易踩坑的細節。 目錄 Routine Load方法 接入kafka實時數據 踩坑的問題細節 Flink Doris Connector方法 完整示例 Routine Load方法…

小識JVM堆內存管理的優化機制TLAB

JVM&#xff08;Java虛擬機&#xff09;在堆內存分配空間時&#xff0c;TLAB&#xff08;Thread Local Allocation Buffer&#xff0c;線程本地分配緩存區&#xff09;是一種重要的內存管理優化技術。以下是對TLAB的詳細解釋&#xff1a; 一、TLAB的定義 TLAB是JVM堆內存管理…

(開源)基于Django+Yolov8+Tensorflow的智能鳥類識別平臺

1 項目簡介&#xff08;開源地址在文章結尾&#xff09; 系統旨在為了幫助鳥類愛好者、學者、動物保護協會等群體更好的了解和保護鳥類動物。用戶群體可以通過平臺采集野外鳥類的保護動物照片和視頻&#xff0c;甄別分類、實況分析鳥類保護動物&#xff0c;與全世界各地的用戶&…

【力扣Hot 100】普通數組2

3. 輪轉數組 給定一個整數數組 nums&#xff0c;將數組中的元素向右輪轉 k **個位置&#xff0c;其中 k **是非負數。 示例 1: 輸入: nums [1,2,3,4,5,6,7], k 3 輸出:[5,6,7,1,2,3,4]解釋: 向右輪轉 1 步:[7,1,2,3,4,5,6] 向右輪轉 2 步:[6,7,1,2,3,4,5] 向右輪轉 3 步:[…

專題三_窮舉vs暴搜vs深搜vs回溯vs剪枝_全排列

dfs解決 全排列&子集 1.全排列 link:46. 全排列 - 力扣&#xff08;LeetCode&#xff09; 全局變量回溯 code class Solution { public:vector<vector<int>> ans;vector<int> cur;vector<bool> used;vector<vector<int>> permute…

2_高并發內存池_各層級的框架設計及ThreadCache(線程緩存)申請內存設計

一、高并發內存池框架設計 高并發池框架設計&#xff0c;特別是針對內存池的設計&#xff0c;需要充分考慮多線程環境下&#xff1a; 性能問題鎖競爭問題內存碎片問題 高并發內存池的整體框架設計旨在提高內存的申請和釋放效率&#xff0c;減少鎖競爭和內存碎片。 高并發內存…

JAVA 使用反射比較對象屬性的變化,記錄修改日志。使用注解【策略模式】,來進行不同屬性枚舉值到中英文描述的切換,支持前端國際化。

1.首先定義一個接口&#xff0c;接口中有兩個方法&#xff0c;分別是將屬性轉換成英文描述和中文描述。 其實就是將數據庫中記錄的 0 1 &#xff0c;轉換成后面的描述 這邊定義了中文轉換為默認方法&#xff0c;是因為有些屬性不需要進行中文轉換&#xff0c;或者該屬性的枚舉…

webrtc入門系列(五)amazon-kinesis-video-streams-webrtc-sdk-c編譯

《webrtc入門系列&#xff08;一&#xff09;easy_webrtc_server 入門環境搭建》 《webrtc入門系列&#xff08;二&#xff09;easy_webrtc_server 入門example測試》 《webrtc入門系列&#xff08;三&#xff09;云服務器coturn環境搭建》 《webrtc入門系列&#xff08;四&…

AIGC大模型詳解(ChatGPT,Cursor,豆包,文心一格)

定義與概念 AIGC&#xff08;AI Generated Content&#xff09;大模型是基于人工智能技術&#xff0c;具有海量參數、強大算力支持&#xff0c;能處理和生成多種類型內容的深度學習模型。可自主學習數據中的模式和規律&#xff0c;生成文本、圖像、音頻等內容&#xff0c;如Ch…

.NET9增強OpenAPI規范,不再內置swagger

ASP.NETCore in .NET 9.0 OpenAPI官方文檔ASP.NET Core API 應用中的 OpenAPI 支持概述 | Microsoft Learnhttps://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/openapi/overview?viewaspnetcore-9.0https://learn.microsoft.com/zh-cn/aspnet/core/fundamentals/ope…

第38周:貓狗識別 (Tensorflow實戰第八周)

目錄 前言 一、前期工作 1.1 設置GPU 1.2 導入數據 輸出 二、數據預處理 2.1 加載數據 2.2 再次檢查數據 2.3 配置數據集 2.4 可視化數據 三、構建VGG-16網絡 3.1 VGG-16網絡介紹 3.2 搭建VGG-16模型 四、編譯 五、訓練模型 六、模型評估 七、預測 總結 前言…

我的2024年年度總結

序言 在前不久&#xff08;應該是上周&#xff09;的博客之星入圍賽中鎩羽而歸了。雖然心中頗為不甘&#xff0c;覺得這一年兢兢業業&#xff0c;每天都在發文章&#xff0c;不應該是這樣的結果&#xff08;連前300名都進不了&#xff09;。但人不能總抱怨&#xff0c;總要向前…

Trimble三維激光掃描-地下公共設施維護的新途徑【滬敖3D】

三維激光掃描技術生成了復雜隧道網絡的高度詳細的三維模型 項目背景 紐約州北部的地下通道網絡已有100年歷史&#xff0c;其中包含供暖系統、電線和其他公用設施&#xff0c;現在已經開始顯露出老化跡象。由于安全原因&#xff0c;第三方的進入受到限制&#xff0c;在沒有現成紙…

QT 中 UDP 的使用

目錄 一、UDP 簡介 二、QT 中 UDP 編程的基本步驟 &#xff08;一&#xff09;包含頭文件 &#xff08;二&#xff09;創建 UDP 套接字對象 &#xff08;三&#xff09;綁定端口 &#xff08;四&#xff09;發送數據 &#xff08;五&#xff09;接收數據 三、完整示例代…

開源鴻蒙開發者社區記錄

lava鴻蒙社區可提問 Laval社區 開源鴻蒙項目 OpenHarmony 開源鴻蒙開發者論壇 OpenHarmony 開源鴻蒙開發者論壇

Git上傳了秘鑰如何徹底修改包括歷史記錄【從安裝到實戰詳細版】

使用 BFG Repo-Cleaner 清除 Git 倉庫中的敏感信息 1. 背景介紹 在使用 Git 進行版本控制時&#xff0c;有時會不小心將敏感信息&#xff08;如 API 密鑰、密碼等&#xff09;提交到倉庫中。即使后續刪除&#xff0c;這些信息仍然存在于 Git 的歷史記錄中。本文將介紹如何使用…