【发布时间】:2015-01-02 10:42:28
【问题描述】:
通常多对多关系会返回如下内容:
Product::with('brands')->find(4);
{
id: 4
name:
price:
brands: [
id: 6
pivot: {
product_id: 4,
brand_id: 6,
// withPivot fields goes here if specified.
// I want to add extra fields here too, unrelated to the database. e.g. :
foo: 'bar'
}
],
suppliers: [
]
}
这是在Product.php:
public function brands()
{
return $this->belongsToMany('Brand');
}
我们是否可以控制 pivot 对象中的内容?我知道它会吐出两个外键 ID 以及您包含的任何 withPivot,但我想添加另一个属性,但我不确定该怎么做。 Laravel 在幕后神奇地完成了所有这些多对多的事情。
这样做会产生错误(我正在尝试将foo: "bar" 添加到每个枢轴)
public function brands()
{
$brands = $this->belongsToMany('Brand');
foreach($brands as $brand)
{
$brand->foo = 'bar';
}
return $brands;
}
【问题讨论】:
-
您要添加的究竟是什么?通常将其添加到相关模型(在这种情况下为
Brand)应该没问题。 -
我已经编辑了我的帖子以澄清,但我认为我不能让它比这更简单。这与
Brand无关,更多的是与控制一般的 json 输出有关。 -
我明白了。但是值是静态的还是从哪里得到的?
-
目前是静态的,但我计划添加动态值,例如另一个结果集,例如
Supplier::find($brand->supplier_id).