Laravel 从 table 获取 id 并将它们插入另一个 table
Laravel Getting id's from a table and inserting them into another table
正在尝试从 table 中获取匹配的 id's
并在不同关系下将它们再次插入到相同的 table 中。
$contentPack = ContentPack::find($id);
$cloned_pack_goals = DB::table('content_pack_goal')->where('content_pack_id' , $contentPack->id)->get();
$cloned_pack_goal_ids = $cloned_pack_goals->goal_id;
产生异常
Exception
Property [goal_id] does not exist on this collection instance.
dd($cloned_pack_goals);
输出:
Illuminate\Support\Collection {#2466 ▼
#items: array:2 [▼
0 => {#3129 ▼
+"goal_id": 4
+"content_pack_id": 2
}
1 => {#2467 ▼
+"goal_id": 9
+"content_pack_id": 2
}
]
}
如何从输出中获取 goal_ids
以将它们再次插入相同的 table 但具有不同的关系?
$newPack = $contentPack->replicate();
DB::table('content_pack_goal')->insert(['content_pack_id' => $newPack->id,'goal_id' => $cloned_pack_goal_ids]);
我在获取 ID 和插入 ID 时做错了。尝试使用 ->first();
它有效,但只有一个 id
被插入
要获取仅包含 ID 的数组,请使用 pluck()
和 toArray()
$cloned_pack_goal_ids = DB::table('content_pack_goal')
->where('content_pack_id' , $contentPack->id)
->pluck('goal_id') // returns a collection of only Ids.
->toArray(); // returns an array from the collection.
以这种格式编写您的查询,这将为您提供所需的输出:
$cloned_pack_goals = DB::table('content_pack_goal')->where('content_pack_id' , $contentPack->id)->get()->toArray();
$cloned_pack_goal_ids = $cloned_pack_goals[0]->goal_id;
$cloned_pack_goals是一个集合,所以需要单独排除所有集合记录中的goal_ids。
此代码段可能对您有所帮助:
$cloned_pack_goal_ids = DB::table('content_pack_goal')->where('content_pack_id' , $contentPack->id)->pluck('goal_id')->toArray();
foreach($cloned_pack_goal_ids as $key => $goal_id) {
DB::table('content_pack_goal')->insert(['content_pack_id' => $newPack->id,'goal_id' => $goal_id]);
}
正在尝试从 table 中获取匹配的 id's
并在不同关系下将它们再次插入到相同的 table 中。
$contentPack = ContentPack::find($id);
$cloned_pack_goals = DB::table('content_pack_goal')->where('content_pack_id' , $contentPack->id)->get();
$cloned_pack_goal_ids = $cloned_pack_goals->goal_id;
产生异常
Exception
Property [goal_id] does not exist on this collection instance.
dd($cloned_pack_goals);
输出:
Illuminate\Support\Collection {#2466 ▼
#items: array:2 [▼
0 => {#3129 ▼
+"goal_id": 4
+"content_pack_id": 2
}
1 => {#2467 ▼
+"goal_id": 9
+"content_pack_id": 2
}
]
}
如何从输出中获取 goal_ids
以将它们再次插入相同的 table 但具有不同的关系?
$newPack = $contentPack->replicate();
DB::table('content_pack_goal')->insert(['content_pack_id' => $newPack->id,'goal_id' => $cloned_pack_goal_ids]);
我在获取 ID 和插入 ID 时做错了。尝试使用 ->first();
它有效,但只有一个 id
被插入
要获取仅包含 ID 的数组,请使用 pluck()
和 toArray()
$cloned_pack_goal_ids = DB::table('content_pack_goal')
->where('content_pack_id' , $contentPack->id)
->pluck('goal_id') // returns a collection of only Ids.
->toArray(); // returns an array from the collection.
以这种格式编写您的查询,这将为您提供所需的输出:
$cloned_pack_goals = DB::table('content_pack_goal')->where('content_pack_id' , $contentPack->id)->get()->toArray();
$cloned_pack_goal_ids = $cloned_pack_goals[0]->goal_id;
$cloned_pack_goals是一个集合,所以需要单独排除所有集合记录中的goal_ids。 此代码段可能对您有所帮助:
$cloned_pack_goal_ids = DB::table('content_pack_goal')->where('content_pack_id' , $contentPack->id)->pluck('goal_id')->toArray();
foreach($cloned_pack_goal_ids as $key => $goal_id) {
DB::table('content_pack_goal')->insert(['content_pack_id' => $newPack->id,'goal_id' => $goal_id]);
}