我正在运行一个查询,其中必须根据公司或品牌或两者的组合来过滤产品。
下面是我正在使用的查询。
arr = [{book:"2"},{phone:"3"},{television:"10"}]
newarr = arr.map(obj => Object.entries(obj)[0])
console.log(newarr)
// [ [ 'book', '2' ], [ 'phone', '3' ], [ 'television', '10' ] ]
但是我面临一个问题。我的品牌或公司关系对象无论是否匹配都为空。因此,在打印时,我无法访问数据。
$products = ProductInventoryMapping::with([
'distributor',
'product.unit',
'product.subbrand',
'product.brand' => function ($query) use ($search_brand) {
if(strlen($search_brand) > 0) {
$query->where('name', 'like', '%'.$search_brand.'%');
}
},
'product.brandcompany' => function ($query) use ($search_company) {
if(strlen($search_company) > 0) {
$query->where('name', 'like', '%'.$search_company.'%');
}
}
])->where('user_id', $id)->get()
Trying to get property 'name' of non-object", exception: "ErrorException
答案 0 :(得分:0)
您确定存在这种关系吗?如果某些产品没有品牌或品牌公司,那么您有2种选择
has
或whereHas
来确保只获取具有关系的对象。