作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Order
模型,属于 User
并具有 Revision
。
当我尝试加载订单时,包括:来自其用户的 'id'
和 'name'
字段以及包括 'user_id'
在内的一些字段> 整个修订版的字段,我愿意:
return Order::with(array('user' => function ($query) {
$query->select('id','name');
}), 'revisions' => function ($query) {
$query->select('id','created_at','user_id','operation','text');
})->get();
但是,我想获取用户的名称,它自然位于users
表中的'name'
字段中。
订单
public function user() {
return $this->belongsTo('User');
}
public function revisions() {
return $this->hasMany('Revision');
}
修订
public function order() {
return $this->belongsTo('Order');
}
用户
public function orders() {
return $this->hasMany('Order');
}
public function revisions() {
return $this->hasMany('Revision');
}
出于快速输入的原因,我将其表示为 JS 对象...
orders = [
{ id: 5,
user: {....},
revisions: [
{ id:100,
operation: 'Creation',
text: 'Please provide soon',
user: 'John Doe' // Here I got the name instead of a user_id
}
]
},
{...}
]
我怎样才能完成这个?
我对每个模型都进行了正确的关系设置。
最佳答案
好吧,您在 revisions
中获得 user_id
因为它是 revision 本身的属性,您应该在 Order
对象中查找用户名返回
$x = Order::with(array('user' => function ($query) {
$query->select('id','name');
}), 'revisions' => function ($query) {
$query->select('id','created_at','user_id','operation','text');
})->get();
var_dump($x->user->name);
$x->user
是关系模型,user->name
是其属性
因此,要将其包含在修订版
中,您必须执行以下操作:
$x->each(function(&$order) {
$order->revisions->each(function(&$rev) use ($order) {
$rev->setUsername($order->user->name);
});
});
假设您的 relation
模型中有一个 setUsername
方法。无论如何,关系模型中的用户名应该是私有(private)属性,而不是可填充字段,因为它不是表的一部分,在这种情况下,您必须检查如果在执行 ->toJson()
关于php - 如何使用 Eloquent 从嵌套关系中加载特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29264306/
我是一名优秀的程序员,十分优秀!