Laravel 从 5.0 版本开始就已支持 JSON 数据的转换,但这样做的目的只是为了方便数据处理。你的数据依然以 TEXT 类型存放在你的数据库里。不过 MySQL 从 5.7 版本起开始支持原生 JSON 数据类型,这将为我们的开发带来便捷, Laravel 5.3 也为基于 JSON 类型的数据查询和更新引入了新的语法。
假设我们有一个包含 JSON 类型字段的数据表:
class CreateContactsTable extendsMigration
{public functionup()
{
Schema::create('contacts', function (Blueprint $table) {$table->increments('id');$table->string('name');$table->json('meta');$table->timestamps();
});
}
我们假设每个 contacts 表单都包含一些基本信息,比如联系人姓名。但是另外的一些属性是非常灵活的,这些属性最好以 JSON 类型方式进行存储 —— 就像上文的 meta 字段。
where() 语法介绍
假定某个 contects 的表单信息如下:
{"id": 1,"name": "Monkey","meta": {"wants_newsletter": true,"favorite_color": "red"}
}
现在我们想要获取所有 favorite_color 为 red 的用户,我们可以这么写: