簡體   English   中英

將數據庫列名稱與json鍵匹配的簡單方法?

[英]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_decodejson_decode true作為第二個參數傳遞。 這樣,您無需在將json對象傳遞到fill函數之前將其轉換為數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM