- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个模型:
a) 食谱b) 用户
每个食谱都有一个用户。当 (REST) 请求食谱时,我还想在我的 JSON 答案中获取相关用户的名称,如下所示:
{
"id": 1,
"user_id": 1,
"name": "Recipe Name",
"description": "Description goes here",
"userName": "Testuser"
}
我得到的是:
{
"id": 1,
"user_id": 1,
"name": "Recipe Name",
"description": "Description goes here",
"userName": "Testuser",
"user": {
"id": 1,
"name": "Testuser",
"email": "mail@example.com"
}
}
这是我在 RecipeController 中的功能:
public function show($id) {
$recipe = Recipe::find($id);
$recipe->userName = (string) $recipe->user->name;
return $recipe;
}
我的食谱模型具有以下属性和 setter/getter :
protected $userName = null;
public function setUserName($userName) {
$this->userName = $userName;
}
有趣的是,当使用此代码片段时,我还将整个用户对象作为 JSON 字符串作为 Recipe JSON 字符串的一部分:
public function show($id) {
recipe = Recipe::find($id);
$recipe->user->name;
return $recipe;
}
所以在我的属于配方的用户对象的调用中发生了一些神奇的事情。
最佳答案
您必须将您的关系方法名称添加到您的 Recipe
模型中的 $hidden
属性数组中,以将其从 json 结果中删除。
https://laravel.com/docs/5.1/eloquent-serialization#hiding-attributes-from-json
class Recipe extends Model
{
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['user'];
/**
* The appended attributes shown in JSON results.
*
* @var array
*/
protected $appends = ['username'];
/**
* The username attribute accessor for JSON results.
*
* @var string
*/
public function getUsernameAttribute()
{
return $this->user->name;
}
}
我认为除了形成您自己的 JSON 结果集之外,没有其他方法可以动态地执行此操作。
您还可以将 $hidden
属性添加到您的 User
模型以从 JSON 结果中删除您想要隐藏的用户属性?这将允许您在不返回敏感信息的情况下利用序列化关系模型。
关于json - 只从 hasOne 关系中获取字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38055152/
返回 $this->hasOne('App\Phone', 'foreign_key', 'local_key'); 我需要这两个表中的 hasone 关系。 在这两个表中,关系应该在父表和子表中的用
在登录模型中,我具有与图片表的实现关系 function picture () { return $this->hasOne('App\Picture'); } 现在我想要Picture.pic
这两种 hasOne 语法有什么区别? class Project { ....... ............ static hasOne = Employee // static h
我想对域关联进行反射(reflection),以自动为 RESTful WS(脚手架)生成 JSON/XML 格式的类描述 rune 件。在 HasOne 的情况下(据说是双向的),我试图在 Asso
我正在尝试将 leftJoin 添加到 hasOne 方法中,但它似乎不起作用。来自主表的数据存在,但不来自连接表。代码: public function getUser() {
我有两个模型: a) 食谱b) 用户 每个食谱都有一个用户。当 (REST) 请求食谱时,我还想在我的 JSON 答案中获取相关用户的名称,如下所示: { "id": 1, "user_id"
我是 Grails 的新手。 我可以使用“hasOne”或“hasMany”而不使用“belongsTo”到另一个域类吗? 提前致谢。 最佳答案 是的你可以。请参阅 Grails 文档中的示例:htt
要在 Grails 中创建一对一关系,我可以执行以下操作: class Person { static hasOne = [address: Address] } 在这种情况下,地址表具有其人
我对 NodeJS 和 SequelizeJS 比较陌生,并且我正在构建的查询面临 hasOne 问题,我想知道您对此问题的看法,以找出我出错的地方以及实现此查询的正确方法。 Association
我的表 下面是将 ad_type_id 作为外键并与 ad_type 关联的分类模板模型 'use strict'; module.exports = (sequelize, DataType
假设我有一个 grails 域类,它看起来像 class Person { Address address } 我也可以将其声明为 class Person { static hasOne
我在设置 hasOne 关系时遇到了一些问题,这可能是因为我错误地理解了该关系? 我有 2 个模型,一个用户模型和一个位置模型。我现在要添加的是用户和位置之间的关系,这意味着用户具有当前位置。但是,如
为什么 Laravel 的 Eloquent 坚持 hasOne 关系中的外键必须位于引用表中,而不是位于父表中? 我要求获得一般性的理解/丰富。 例如,来自 Laravel 文档:如果 User 有
在将现有应用程序从 Grails 2.5 迁移到 3.1 时,我遇到了双向一对一关系的奇怪问题。 想象一个带有 User 和 Employee 的简单模型对象。 A User代表通用用户帐户。并非所有
我有一些模型正在尝试关联。 一种模型是 Item,一种是 Slide,另一种是 Asset。 项目下方有多个幻灯片。 Assets 基本上是已上传的文件(图像、mp3 等),幻灯片是显示 Assets
为什么 Laravel 的 Eloquent 坚持 hasOne 关系中的外键必须位于引用表中,而不是位于父表中? 我要求获得一般性的理解/丰富。 例如,来自 Laravel 文档:如果 User 有
对于 belongsTo关系,我可以用dissociate ,但什么是等效于 hasOne ? 前任。 Phone属于User : $phone->user()->dissociate(); // s
所以我有2个模型,User & Profile,关系设置如下: /** * User belongs to many Profile * * @return \I
我有两个表: users 包含(id, name, email) id为主键。 users_details contains (user_id, address, city, postcode) us
我有 2 个表: "article": |id|name|text| "article_permissions" |article_id|val| 所以,我不想将 article_permis
我是一名优秀的程序员,十分优秀!