發現 laravel 的 update 無法作用在 json 欄位值為 null 的上面
也就是說 如果 metadata 為 null
\DB::table('users')
->where('id', $user->id)
->update(['metadata->resource_total_count' => $user->resources_count]);
不會真的更新 metadata,也不會 throw error
那麼在 migration 加上 default value 如何?
public function up()
{
Schema::table('users', function (Blueprint $t) {
$t->json('metadata')->default("{}")->after('custom_colors');
});
}
and you will get this
1 PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1101 BLOB, TEXT, GEOMETRY or JSON column 'metadata' can't have a default value")
結論
這作法不可行 會造成更多問題
不過 好像也只是 mysql 5.7 之前
mysql 8 之後好像就可以了
發現 laravel 的 update 無法作用在 json 欄位值為 null 的上面
也就是說 如果 metadata 為 null
不會真的更新 metadata,也不會 throw error
那麼在 migration 加上 default value 如何?
and you will get this
結論
這作法不可行 會造成更多問題
不過 好像也只是 mysql 5.7 之前
mysql 8 之後好像就可以了