[英]Easy way to match DB column names to json keys?
因此,我有一個非常簡單的json對象,它代表一個數據庫行條目,我需要將其保存為原來的樣子。 所以例如json有
{
"id": 1,
"name": "A green door",
"price": 12.50,
"tags": ["home", "green"]
}
在我的數據庫中,我有一個帶有ID,名稱,價格和標簽列的表。 除了這樣做,最簡單的方法是什么
$mysqlObject->id = $jsonObject->id;
$mysqlObject->name = $jsonObject->name;
$mysqlObject->price = $jsonObject->price;
$mysqlObject->tags = $jsonObject->tags;
$mysqlObject->save();
上面的方法可以工作,但是在我的特定示例中,我有200-300列,而鍵入所有內容將永遠花費一整天。
將所有列名稱放在列表中並對其進行迭代。
$column_names = Array(...);
foreach($column_names as $col_name) {
$mysqlObject->$col_name = $jsonObject->$col_name;
}
$mysqlObject->save();
這應該夠了吧。 確保在服務器端具有硬編碼列表,並且不依賴JSON,否則腳本將容易受到注入攻擊。
我能想到的最簡單的方法是:
$mysqlObject = MysqlModel::create(json_decode($jsonObject));
當然,您需要為此創建一個Eloquent模型。 你可以有受益Mutator
雄辯的。
您應該可以使用fill
$mysqlObject->fill((array) $jsonObject);
如果您可以將json字符串解碼為數組,那將是更好的選擇。 如果您使用的是json_decode
, json_decode
true
作為第二個參數傳遞。 這樣,您無需在將json對象傳遞到fill
函數之前將其轉換為數組。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.