php - 如何从数据库特定的选定值添加到解码的 Json 数组

标签 php arrays database laravel crud

我正在开发电影 WebApp。用户选择电影并将其添加到数据库中。 movie_list 列是一个 JSON,因为

我希望每次用户添加电影时,它都会被添加到数组中,如果它已经在其中,我希望它不会被添加到数组中

问题是它不是将它添加到现有数组,而是有时会覆盖数组,只需添加一个嵌套数组或创建一个自定义键 (0,1,2,3)

我试着像这样工作

  array_merge and array_add

  // It does overwrite it
  array['checkedMovie'] = 3

也想过for each,可惜不知道怎么实现。

我的大脑被挤压了。

public function update(Request $request, TrackMovie $trackMovie)
    {

      $currentCheckedMoviesArray = DB::table('track_movies')->where('user_id', $trackMovie->user_id)->get('checkedMovie');


      $currentCheckedMoviesArray = json_decode($currentCheckedMoviesArray, true)[0];

      $newarraychecked=array_add($currentCheckedMoviesArray,$currentCheckedMoviesArray['checkedMovie'], $trackMovie->checkedMovie);



      return dd($newarraychecked);

      $current_length = DB::table('track_movies')->where('user_id', $trackMovie>user_id)->value('lengthOfMovie');
      DB::table('track_movies')->where('user_id', $trackMovie->user_id)->update([
        'lengthOfMovie' => $current_length + $trackMovie->lengthOfMovie,
'checkedMovie' => $newarraychecked;
      ]);
        return dd(TrackMovie::all());
    }

为了让它更清楚一点,我编辑了它,因为我认为这是因为我的格式。

$currentCheckedMoviesArray = json_decode($currentCheckedMoviesArray, true)[0];
// DD Result
array:1 [▼
  "checkedMovie" => "["1", "2"]"
]

$trackMovie->checkedMovie
//DD Result
array:2 [▼
  0 => "2"
  1 => "4"
]

$newarraychecked=Arr::collapse($currentCheckedMoviesArray, $trackMovie->checkedMovie);
//DD Result
    []

实际结果:

This is the result what I get on the above code
array:1 [▼
  "checkedMovie" => "["1", "2"]"
]

There some more because I tested many things

array:1 [▼
  "checkedMovie" => "["1", "2"]"
   1             => "2"
   2             => "4"

]

预期结果:

The User is checking some movies.
// He already has some movies
checkedMovie = ["1","2","3"]

Now the Application Checks if it already existed the movie in the Database. 
If it does not contain in the database I want to add it. User selects Movie ID (5,6)
checkedMovie = ["1","2","3","5","6"]

After that, it will overwrite the Database column value

如果我忘记了要添加到问题中的内容,请发表评论以便我可以编辑问题!

最佳答案

尝试以下操作:

$checkedMovie=array(1,2,3);  
$selectedMovie=array(3,4,5,6);
$checkedMovie=array_unique(array_merge($checkedMovie,$selectedMovie));

关于php - 如何从数据库特定的选定值添加到解码的 Json 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56559853/

相关文章:

sql - Liquibase 脚本使列中的所有数据都大写

php - 任何人都知道如何使用 nexmo 短信 api 接收短信到 php 脚本

python - 从 numpy 求和二维数组创建加权 igraph 图作为邻接矩阵

javascript - 如何获取数组中项目的索引?

javascript - 需要 javascript 中的碰撞脚本帮助

javascript - Tablesorter - 过滤输入字段和值

Mysql:选择所有字段都相等的行

PHP 将旧的 mysql_query 更改为 PDO

php - mysql查询结果转字符串返回nil

php - 如何在 Ubuntu 上将 PHP-FPM 升级到 PHP 5.5?