我通过以下方式获取Laravel Eloquent集合:
$product = Product::query()->with(['merchant', 'picture'])->where('id', $id)->first();
并获得$product
的转储为
Product {
#casts: ...
#dates: ...
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:1 [
"id" => 27
]
#original: ...
#changes: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: array:2 [
"merchant" => Merchant {...}
"picture" => Picture {...}
}
]
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: ...
}
我需要从此集合中取消设置关系对象merchant
和picture
。
我尝试了以下选项,但失败了:
unset($product['merchant']);
unset($product->merchant);
任何帮助将不胜感激。
预先感谢
答案 0 :(得分:8)
在Laravel 5.6.25中,您可以使用unsetRelation()
:
$product->unsetRelation('merchant')->unsetRelation('picture');
在此之前:
$relations = $product->getRelations();
unset($relations['merchant'], $relations['picture']);
$product->setRelations($relations);
答案 1 :(得分:2)
您可以取消设置
unset($product->merchant);
答案 2 :(得分:0)
我必须使用具有相同字段的表。所以我需要检查 基于值的不同列。所以如果外键的值是 同样需要取消该关系
如果模型中有merchant
个属性(表中的merchant
列),则可以使用$product->getOriginal('merchant')
或$product->getAttribute('merchant')