[英]Laravel Eloquent Insert Multiple records only if one field is provided as an array
如果僅將一個字段作為數組提供,Laravel / Eloquent是否提供一種通過一次調用創建多個記錄的方法?
例如,我在下面的數據中輸入了$ request,但是只有propIds會被分解並作為數組提供,所有其他值對於所有新記錄都是相同的。
{"_token": "kEKmrPzu4nCk35xJAMOgdl0kNdwUZvpECsBl91dH",
"propIds": "126,129,71,82,77,64,69",
"rate": "4",
"cost": "55"
}
我可以做一個foreach並建立一個數組,然后運行Model::insert($newArray);
但是也許Laravel確實提供了一種解決方案,如果僅將一個字段作為數組提供。 謝謝。
現在,我只是使用foreach循環創建數組,然后調用Model::insert($newArray);
用Model::insert($newArray);
插入多個記錄 不會自動添加created_at和Updated_at日期 。 我在數據庫中添加了一個時間戳作為默認值。
是的,有可能。 您需要使用insert()
並使用以下格式創建一個新數組:
Model::insert([
['prop_id' => 126, 'rate' => 4, 'cost' => 55],
['prop_id' => 129, 'rate' => 4, 'cost' => 55],
['prop_id' => 71, 'rate' => 4, 'cost' => 55],
]);
insert()
將僅創建一個數據庫查詢。
您可以重寫Laravel模型的create
函數,如下所示:
模型
namespace App\Models;
class YourModel extends BaseModel
{
protected $fillable = [
"_token", "propId", "rate", "cost"
];
// override
public static function create(array $attributes = [])
{
$propIds = array_explode(',', $attributes['propIds']);
foreach ($propIds as $key => $value) {
$model = new static([
"_token" => $attributes['_token'],
"propId" => $value,
"rate" => $attributes['rate'],
"cost" => $attributes['cost']
]);
$model->save();
}
}
}
控制者
YourModel::create([
"_token" => $request->input('_token'),
"propIds" => $request->input('propIds'), // "126,129,71,82,77,64,69"
"rate" => $request->input('rate'),
"cost" => $request->input('cost'),
]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.