同步获取 eloquent laravel
sync fetch eloquent laravel
我有这个数组:
$ingredients_alergens = [
1285 => [ //id from ingredient
4, //id from alergen
2
]
1286 => [
6
]
1287 => [
1
]
1288 => [
9
]
]
我想进行类似于此的大规模同步:
$ingredient->alergens()->sync([1,3,8]);
但所有数组。我想为完整列表制作一个 únic sync/upsert/something 并且不要查询查询。因为我有 arrays/jsons 来自一千多个记录。
有没有什么方法可以在 eloquent laravel 中构建大规模同步(进入单个查询,如更新插入)?
您有许多 Ingredient
(1285、1286、1287、1288),因此您需要先获取所有这些,然后针对每个,同步关系。
您可以使用 $ingredients_alergens
变量用这两行来完成:
$ingredients_alergens = [
1285 => [4, 2],
1286 => [6],
1287 => [1],
1288 => [9],
];
Ingredient::findMany(array_keys($ingredients_alergens)) // findMany([1285, 1286, 1287, 1288])
->each(fn(Ingredient $i) => $i->alergens()->sync($ingredient_alergens[$i->id]));
如果您不想sync
删除现有的过敏原。 (例如,您只想将过敏原 9 添加到成分 1288),请使用 syncWithoutDetaching()
而不是 sync()
。
我有这个数组:
$ingredients_alergens = [
1285 => [ //id from ingredient
4, //id from alergen
2
]
1286 => [
6
]
1287 => [
1
]
1288 => [
9
]
]
我想进行类似于此的大规模同步:
$ingredient->alergens()->sync([1,3,8]);
但所有数组。我想为完整列表制作一个 únic sync/upsert/something 并且不要查询查询。因为我有 arrays/jsons 来自一千多个记录。
有没有什么方法可以在 eloquent laravel 中构建大规模同步(进入单个查询,如更新插入)?
您有许多 Ingredient
(1285、1286、1287、1288),因此您需要先获取所有这些,然后针对每个,同步关系。
您可以使用 $ingredients_alergens
变量用这两行来完成:
$ingredients_alergens = [
1285 => [4, 2],
1286 => [6],
1287 => [1],
1288 => [9],
];
Ingredient::findMany(array_keys($ingredients_alergens)) // findMany([1285, 1286, 1287, 1288])
->each(fn(Ingredient $i) => $i->alergens()->sync($ingredient_alergens[$i->id]));
如果您不想sync
删除现有的过敏原。 (例如,您只想将过敏原 9 添加到成分 1288),请使用 syncWithoutDetaching()
而不是 sync()
。