我有收藏夹程序表。我将使用ajax查询将数据库收藏的programm id添加到具有用户ID的表中。如何使用当前用户ID跳过重复的程序ID。 我现在创建此方法以跳过重复值但不能调用:
public function test($programm_id){
$fav = new \App\Favorite;
$user_id = Auth::id();
$fav_count = $fav::where('id_user', Auth::user()->id)->count();
$getFavorites = $fav::where('id_user', $user_id)->get()->toArray();
$userProgramms = $fav->where('id_user', $user_id)->select('id_program')->get()->toArray();
$bool = true;
foreach ($userProgramms as $array) {
foreach ($array as $value) {
if($value === $programm_id) $bool = false;
}
}
if($fav_count <= 5){
if ($bool){
$fav->id_user = Auth::user()->id;
$fav->id_program = $programm_id;
$fav->save();
}
}
}
这是我的表:
请在此控制器中查看我的方法favorite()
:Controller
我的更新代码无法更多1次保存到数据库。
$fav = new \App\Favorite;
$fav_count = $fav::where('id_user', Auth::user()->id)->count();
if($fav_count <= 5)
{
$fav->updateOrInsert(['id_user' => Auth::id()], ['id_program' => $post['id_program']]);
}
每个用户都可以添加到表格最多6个最喜欢的ID程序
答案 0 :(得分:0)
在表格上添加唯一索引:
macos_10_13
ALTER TABLE `tableName` ADD UNIQUE `unique_index`(`id_user`, `id_program`);
如果没有INSERT INTO t1 (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
UPDATE t1 SET c=c+1 WHERE a=1;
和id_user
值相同的记录,那么您的查询将以这种方式插入新记录,以防它出现问题。在该行上执行更新。
答案 1 :(得分:0)
如果您想在PHP中执行此操作并假设您的值存储在数组中,则可以使用array_unique()
。