網(wǎng)站頁面設計需求網(wǎng)絡推廣官網(wǎng)首頁
【圖書介紹】《ThinkPHP 8高效構(gòu)建Web應用》-CSDN博客
《2025新書 ThinkPHP 8高效構(gòu)建Web應用 編程與應用開發(fā)叢書 夏磊 清華大學出版社教材書籍 9787302678236 ThinkPHP 8高效構(gòu)建Web應用》【摘要 書評 試讀】- 京東圖書
使用VS Code開發(fā)ThinkPHP項目-CSDN博客
編程與應用開發(fā)_夏天又到了的博客-CSDN博客
我們學習了通過調(diào)用json()方法來設置JSON字段。然而,每次操作JSON字段都需要調(diào)用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,使其通過數(shù)組方式操作JSON字段。
$jsonType字段和$type字段類似,用來指定JSON子字段的數(shù)據(jù)類型,在不指定的情況下,默認都視為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']是使用數(shù)組形式訪問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字段,可以減少一部分重復調(diào)用json()方法的工作,進而提高開發(fā)效率。因此,我們建議各位讀者將其納入常見開發(fā)實踐中,使自己的開發(fā)更加高效!