Laravel sync 与可选参数的关系
Laravel sync Relation with optional parameters
我使用同步功能来同步 belongsToMany 关系:
$model->products()->sync($productIds);
在 $productIds 数组中有一个带有一些 ID 的平面数组 -
像这样:
$productIds = [1,3,5,6];
我想要的:
主元 table 还有其他列,例如 "created_by" 和 "updated_by".
但是如何在不执行 foreach 循环的情况下将这些字段添加到我的数组中?
有没有更短的方法来做到这一点?
我需要这样的数组:
$productIds = [1 => [
'created_by' => 1,
'updated_by' => 1
],3 => [
'created_by' => 1,
'updated_by' => 1
],5 => [
'created_by' => 1,
'updated_by' => 1
],6 => [
'created_by' => 1,
'updated_by' => 1
]];
是的,我知道我可以使用 foreach 来完成,并在遍历数组时添加列。但我想把它做得更短..有没有办法让它更短(也许 laravel)?
将代码示例中 $productIds 中设置的内容传递给 sync().[=12 应该就足够了=]
此方法不仅适用于整数数组。您还可以传递一个数组,其中键是同步 ID,值是应该为给定 ID 设置的数据透视属性数组。
这应该可以解决问题:
$productIds = [
1 => [
'created_by' => 1,
'updated_by' => 1
]
//rest of array
];
$model->products()->sync($productIds);
只需确保您已在关系定义中将这些字段定义为数据透视字段。
为了根据 $productIds 中的 ID 列表生成这样的 table,您可以执行以下操作:
$productIds = array_fill_keys($productIds, array(
'created_by' => 1,
'updated_by' => 1,
));
我使用同步功能来同步 belongsToMany 关系:
$model->products()->sync($productIds);
在 $productIds 数组中有一个带有一些 ID 的平面数组 - 像这样:
$productIds = [1,3,5,6];
我想要的: 主元 table 还有其他列,例如 "created_by" 和 "updated_by".
但是如何在不执行 foreach 循环的情况下将这些字段添加到我的数组中? 有没有更短的方法来做到这一点?
我需要这样的数组:
$productIds = [1 => [
'created_by' => 1,
'updated_by' => 1
],3 => [
'created_by' => 1,
'updated_by' => 1
],5 => [
'created_by' => 1,
'updated_by' => 1
],6 => [
'created_by' => 1,
'updated_by' => 1
]];
是的,我知道我可以使用 foreach 来完成,并在遍历数组时添加列。但我想把它做得更短..有没有办法让它更短(也许 laravel)?
将代码示例中 $productIds 中设置的内容传递给 sync().[=12 应该就足够了=]
此方法不仅适用于整数数组。您还可以传递一个数组,其中键是同步 ID,值是应该为给定 ID 设置的数据透视属性数组。
这应该可以解决问题:
$productIds = [
1 => [
'created_by' => 1,
'updated_by' => 1
]
//rest of array
];
$model->products()->sync($productIds);
只需确保您已在关系定义中将这些字段定义为数据透视字段。
为了根据 $productIds 中的 ID 列表生成这样的 table,您可以执行以下操作:
$productIds = array_fill_keys($productIds, array(
'created_by' => 1,
'updated_by' => 1,
));