我有以下查询,它带回了一个user_id数组,每个用户都将收到通知。
$pstusrmembs = DB::table('postusrs')
->where('post_id', $post_id)
->where('accepted', 1)
->pluck('user_id');
我需要在下面的“插入”代码中将每个user_id放在不同的行中:
$notifs = new Notif();
$notifs->rec_uid = $pstusrmembs;
$notifs->title = $post_title;
$notifs->save();
如何更改$notifs->rec_uid = $pstusrmembs;
来做到这一点?
答案 0 :(得分:1)
为此使用for循环
foreach($pstusrmembs as $userID){
$notifs = new Notif();
$notifs->rec_uid = $userID;
$notifs->title = $post_title;
$notifs->save();
}
如果您正在使用“批量分配”概念
foreach ($pstusrmembs as $userID) {
Notif::create(['rec_uid' => $userID, 'title' => $post_title]);
}
如果您正在使用“批量分配”概念没有任何模型 活动或听众
foreach ($pstusrmembs as $userID) {
$arrayOfNotif[] = ['rec_uid' => $userID, 'title' => $post_title];
}
Notif::insert($arrayOfNotif);
答案 1 :(得分:0)
我建议即使在系统故障的情况下,也要使用数据库事务来保持数据库的一致性,并将该列表准备为数组并插入一行....
$prepare = [];
foreach($pstusrmembs as $p) {
$prepare[] = [
'rec_id' => $p,
'title' => $post_title
];
}
DB::beginTransaction();
try {
Notif::insert($prepare);
DB::commit();
} catch (Exception $e) {
DB::rollback();
}