[英]How to remove/update single value from array in the database in laravel 6?
目前,我的數據庫中有一個名為userIds
的列,它是一個數組。 我希望能夠從該數組中更新/刪除單個值,但我嘗試過的方法沒有奏效。
控制器
public function removeUser(Request $request) {
$scrumId = $request->scrumId;
$userId = $request->userId;
DB::table('scrumboards')->where('userIds', $userId)->delete();
return redirect()->back();
}
如何在不刪除整個列的情況下更新數據庫中數組中的單個值?
- 編輯 -
數據庫行示例:
title UserIds
test ["1"]
使用userIds
真的很糟糕。 如果您的scrumboards
數據變得巨大。
當找到帶有userid
的 scrumboards 時,它會變得很慢。
所以你為什么不使用hasMany
或many-to-many
關系,就像Scrumboard
有很多Users
如果您的數據變得巨大,您可以向scrumboard_id
添加索引,
計分板模型:
class Scrumboard extends Model {
protected $table = 'scrumboards';
public function users()
{
return $this->hasMany(User::class, 'scrumboard_id', 'id');
}
}
用戶模型:
class User extends Model {
protected $table = 'users';
public function scrumboard()
{
return $this->belongsTo(Scrumboard::class, 'scrumboard_id');
}
}
然后你可以像這樣刪除:
User::where('id', $userId)->delete();
# or
User::where('id', $userId)->update(['scrumboard_id' => null]);
如果你真的想使用user_ids,你可以這樣做:(通過like
找到user_id,通過replace
其更新為空)
$sb = DB::table('scrumboards')->where('userIds', 'like', "%\"{$userId}\"%");
$sb->update(['userIds' => \DB::raw("REPLACE(userIds, '\"{$userId}\"', '')")]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.