//首先从表单中传递过来一个数组:
$param
[
'store_name'
]=
'测试店铺'
;//这是接收的店铺名字
$data
[
'tag_ids'
] = [1,3,4,5];//这是选择的标签的id数组
//然后首先 店铺表中插入一条数据
$result
= Store::create(
$param
);
//var_dump(
$result
);
//遍历选择的标签数组 绑定标签与店铺之间的关系
if
(count(
$data
[
'tag_ids'
])>0) {
foreach (
$data
[
'tag_ids'
] as
$value
) {
$res
[] = TagGroup::create([
'store_id'
=>
$result
->store_id,
'tag_id'
=>
$value
]); //绑定关系
按照上面的代码写下来 估计在修改的店铺标签的时候 估计会炸掉! 因为首先要查 这个标签绑定过没 绑定了的 要删除 并把没有绑定过的再绑定上 多麻烦 所以 有需求就有解决方案! 如下所示我们使用 sync() 来做关系:
//首先从表单中传递过来一个数组:
$param
[
'store_name'
]=
'测试店铺'
;//这是接收的店铺名字
$data
[
'tag_ids'
] = [1,3,4,5];//这是选择的标签的id数组
//然后首先 店铺表中插入一条数据
$result
= Store::create(
$param
);
//var_dump(
$result
);
//这里我们不需要遍历了 只需要这样写
$res
=
$result
->tag->sync(
$data
[
'tag_ids'
]);
接下来我们需要在 Stroe model中 去定义一个关联模型
class Store extend Model{
public
function
tag
() {
return
$this
->belongsToMany(Tag::class,
'tag_group'
,
'tag_id'
,
'store_id'
);
这样 我们就可以 很方便的去给店铺 挂载标签 或者属性, sync() 为我们提供了 大部分的功能,比如在修改的时候他会自动去找,如果没有的去绑定或者删除...
非优秀程序员
JavaScript
-
65.3w
-
程序员老鱼
掘金·日新计划
ChatGPT
OpenAI
-
36.7w
-
ssh_晨曦时梦见兮
JavaScript
-
33.1w
-
嵌入式视觉
掘金·日新计划
ChatGPT