PHP利用Laravel ORM从Mysql读取存储json的字段,有的返回数组,有的返回字符串。
public function index(){
$this->checkPermission('applications/game/index');
$games = Game::select('id','name','logo','languages','version','pay_configs','advertisement','link','disabled')->get();
var_dump($games[0]['advertisement']);
//string(78) "{"zh":"\u751f\u6b7b\2","en":"Battle 2","tr":"Battle 2"}"
var_dump($games[0]['name']);die();
//array(3) { ["zh"]=> string(13) "生死" ["en"]=> string(14) "Battle 2" ["tr"]=> string(14) "Battle 2" }
return $this->success(['games' => $games]);
}
表结构如下:
CREATE TABLE `games` (
`id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(600) NOT NULL COMMENT '游戏名称 {"zh":"生死"}',
`advertisement` text COMMENT '广告 {"zh":"生死广告"}',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='游戏';
存储在数据库的字段都是字符串的json,为什么一个字段的json取出自动变为数组,另一个字段的json取出还是个字符串?(数据库存储的两个字段内容中文都是unicode转义过的)
设置模型的
$cats
属性,让框架帮你自动转换。