数据库 JSON

.数据库 JSON
1. 数据库写入 JSON 字段,直接通过数组的方式即可完成;

  1. $data = [
  2. 'username' => '辉夜',
  3. 'password' => '123',
  4. 'gender' => '女',
  5. 'email' => 'huiye@163.com',
  6. 'price' => 90,
  7. 'details' => '123',
  8. 'uid' => 1011,
  9. 'status' => 1,
  10. 'list' => ['username'=>'辉夜', 'gender'=>'女',
  11. 'email'=>'huiye@163.com'],
  12. ];
  13. Db::name('user')->insert($data);
  1. 从上面写入可以看出,list 字段设置的就是 json,通过数组写入的就是 json;
    3. 但是,如果我要写入 details 这个 text 文本格式的字段,通过数组会报错;
    4. 这个时候,采用->json([‘details’])方法来进行转换,也可以写入 json 数据;
    1. 'details' => ['content'=>123],
    2. Db::name('user')->json(['details'])->insert($data);
  2. 在查询上,也可以使用->json([‘list,details’])方法来获取数据;
    1. $user = Db::name('user')->json(['list','details']) ->where('id', 173)->find();
    2. return json($user);
  3. 如果要将 json 字段里的数据作为查询条件,可以通过如下方式实现:
    1. $user = Db::name('user')->json(['list','details'])-> where('list->username', '辉夜')->find();
  4. 如果想完全修改 json 数据,可以使用如下的方式实现:
    1. $data['list'] = ['username'=>'李白', 'gender'=>'男'];
    2. Db::name('user')->json(['list']) ->where('id', 174)->update($data);
  5. 如果只想修改 json 数据里的某一个项目,可以使用如下的方式实现:
    1. $data['list->username'] = '李黑';
    2. Db::name('user')->json(['list']) ->where('id', 174)->update($data);

    模型 JSON

  6. 使用模型方式去新增包含 json 数据的字段;
    1. $user = new UserModel();
    2. $user->username = '李白';
    3. $user->password = '123';
    4. $user->gender = '男';
    5. $user->email = 'libai@163.com';
    6. $user->price = 100;
    7. $user->uid = 1011;
    8. $user->status = 1;
    9. $user->details = ['content'=>123];
    10. $user->list = ['username'=>'辉夜', 'gender'=>'女
    11. ','email'=>'huiye@163.com','uid'=>1011];
    12. $user->save();
  7. 对于本身不是 json 字段,想要写入 json 字段的字符字段,需要设置;
    1. protected $json = ['details', 'list'];
  8. 也可以通过对象的方式,进行对 json 字段的写入操作;
    1. $list = new \StdClass();
    2. $list->username = '辉夜';
    3. $list->gender = '女';
    4. $list->email = 'huiye@163.com';
    5. $list->uid = 1011;
    6. $user->list = $list;
  9. 通过对象调用方式,直接获取 json 里面的数据;
    1. $user = UserModel::get(179);
    2. return $user->list->username;
  10. 通过 json 的数据查询,获取一条数据;
    1. $user = UserModel::where('list->username', '辉夜')->find();
    2. return $user->list->email;
  11. 更新修改 json 数据,直接通过对象方式即可;
    1. $user = UserModel::get(179);
    2. $user->list->username = '李白';
    3. $user->save();