0
好吧,讓我們說我有一個API,它返回json中的數據對象。該對象如下所示。將數據加載到Eloquent模型中
{
"id" : 1,
"name":"SynAck",
"sex":"Male",
"age":34,
"roles": [
{
"id":1
"name":"user"
"assigned":"2013-06-10"
},
{
"id":1
"name":"admin"
"assigned":"2014-01-09"
}
],
"created":"2014-06-10"
}
正如你可以看到有2個對象即回到這裏,第一個,讓我們把它稱爲「用戶」和另一個對象,這是第一次,「角色」裏的數組。有2個角色分配給用戶。
所以我們可以說我想將這些信息逐字地加載到我的數據庫中。我可以創建3個表,'用戶'和'角色'和'user_roles',外鍵鏈接user-> user_roles->角色。一個用戶有很多角色。
CREATE TABLE IF NOT EXISTS `users` (
`id` INT(12) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`sex` VARCHAR(10) NOT NULL,
`age` SMALLINT(2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `roles` (
`id` INT(12) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(50) NOT NULL,
`assigned` DATETIME ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
CREATE TABLE IF NOT EXISTS `user_roles` (
`user_id` INT(12) UNSIGNED NOT NULL ,
`role_id` INT(12) UNSIGNED NOT NULL ,
CONSTRAINT `fk_ur_user_id` FOREIGN KEY(`user_id`) REFERENCES users(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
CONSTRAINT `fk_ur_role_id` FOREIGN KEY(`role_id`) REFERENCES roles(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE `idx_user_id_role_id`(`user_id`, `role_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;
然後我會用工匠打造雄辯模型和用戶模型,我想有一個hasManyThrough('roles', 'user_roles');
什麼是從JSON將數據裝入模型的最快和最徹底的方法/表?
我只需要逐一分配值,還是有辦法將屬性從json對象映射到雄辯模型?如果這是可能的,它如何處理關係?
'$ user-> roles() - > create($ roles);'在'users_roles'表中創建條目嗎? – SynackSA
是的,會的。更多信息http://laravel.com/docs/5.0/eloquent#inserting-related-models –