Laravel Eloquent模型的变异/追加属性

时间:2015-08-10 05:13:30

标签: php mongodb laravel laravel-4 eloquent

我想获取laravel eloquent模型的mutated / attached属性。我尝试了$model->getAttributes(),但它返回原始属性数组,因为它们存储在数据库中。但是我想要获取已更改的属性,这些属性尚未保存到数据库中。

我试过$model->toArray(),它返回raw和mutated / attached属性的数组。但是将'date'字段的值转换为字符串。

我使用mongodb作为数据库。 “日期”保存为mongodate,但toArray()将其转换为字符串 - “date”:“2011-03-23 12:00:00”。

因此,当我尝试将从toArray()获取的这些变异/追加属性保存到数据库时,我的日期会以字符串形式保存。

有没有其他方法来获取雄辩模型的变异/追加属性?

提前致谢。

1 个答案:

答案 0 :(得分:2)

似乎你想重新使用Eloquent将模型序列化到数组的逻辑,但要跳过将日期序列化为字符串的那部分逻辑。

Eloquent通过检查其名称是否从模型的getDates()方法返回来识别日期字段。覆盖该方法,使其返回空数组,日期不会被序列化。

您需要覆盖getDates()而不是仅将$dates属性设置为空数组的原因是getDates()$dates中定义的内容外还返回created_at updated_at def viewList(id: Long) = AuthenticatedAction.async { implicit request => val userId = request.user.toLong; db.run(todoLists.filter(listById(id, userId)).result.headOption).flatMap { list => list match { case Some(_) => { val json = toJson(list).as[JsObject] // Fetch the items in this list and add them to the JSON response db.run(todoItems.filter(_.listId === id).sortBy(_.text).result).map { items => Ok(json + ("items" -> toJson(items))) } } case None => Future.successful(NotFound) } } } 字段。