所以我正在运行具有本地化的表格,但我将字符串保存在单独的“主”表中。
假设我有一个每个实体的表格:
Products
id
price
...
翻译表
Translations
id
name
description
...
关系表
product_translation
product_id
translation_id
lang --enum('en', 'es', 'fr',...)
问题:这个
附带的不那么漂亮的json所以我创建了一个使用多对多关系的BaseModel
:
public function translations()
{
return $this
->belongsToMany('Translation')
->where('lang', '=' App::getLocale());
}
因此我可以为我的json做Product::with('translations')->get()
。然而...
我想要什么
{
"name": "Foo",
"description": "Bar",
"price": "1000",
"stock": "10",
}
我得到了什么
{
"id": "1",
"price": "1000",
"stock": "10",
"translations": [
{
"id": "1",
"name": "Foo",
"description": "Bar",
"pivot": {
"product_id": "1",
"translation_id": "1"
}
}
]
}
正如你所看到的那样,输出的包袱太多了。如何限制我想要生成所需json输出的字段?
编辑:发现了https://github.com/laravel/framework/issues/745
因此使用$hidden
我可以隐藏特定字段。整齐。
编辑:使用$appends
getNameAttribute()
访问器方法,我可以为我的json创建一个新属性。问题解决了!
答案 0 :(得分:2)
这是应该添加到类Product的代码(在问题本身中回答):
.
|-- api
| |-- __init__.py
| |-- __init__.pyc
| |-- media
| | `-- sample-media.jpg
| |-- settings.py
| |-- settings.pyc
| |-- urls.py
| |-- urls.pyc
| |-- wsgi.py
| `-- wsgi.pyc
|-- db.sqlite3
|-- manage.py
|-- static
| `-- admin
| ... ... ... ...
|-- uwsgi_conf.ini
`-- uwsgi_params
答案 1 :(得分:0)
您可以使用Laravel查询来获取所需的属性。 请参阅文档:http://laravel.com/docs/5.0/queries#selects
如果addind - > gt; select()只接收你真正需要的东西。