我有 productDetails 功能,它为我提供产品详细信息,如果用户通过身份验证,它可以为产品添加书签。但是当我打开 projectDetail 页面时,如果我未经身份验证,我的产品对象变为 false 我该如何解决?未经身份验证的用户可以查看产品但无法添加书签
public function productDetails($slug, Product $product)
{
$user = Auth::user();
$product->load(['user.products' => function ($q) {
$q->take(15);
}, 'brand', 'color', 'size', 'images', 'category.products' => function ($q) {
$q->inRandomOrder()->take(15);
}]);
$similarProducts = $product->category->products()->limit(10)->get();
$similarArr = array();
foreach ($similarProducts as $similarProduct) {
$similarProduct = $this->userProductLikeAndBookmark($user, $similarProduct);
$similarArr[] = $similarProduct;
}
$userProducts = $product->user->products;
$productArr = array();
foreach ($userProducts as $userProduct) {
$userProduct = $this->userProductLikeAndBookmark($user, $userProduct);
$productArr[] = $userProduct;
}
dd($productArr);
$product = $this->userProductLikeAndBookmark($user, $product);
return view('home.pages.detail', compact('product', 'similarArr', 'productArr'));
}
这是问题所在:
$user = Auth::user();
$product = $this->userProductLikeAndBookmark($user, $product);
当未经$user
身份验证时,为 null,因此userProductLikeAndBookmark
控制器中的whataver函数正在执行,它不接受null
作为第一个参数$user
可能的解决方案:
if (auth()->check()) {
$product = $this->userProductLikeAndBookmark($user, $product);
}
return view('home.pages.detail', compact('product', 'similarArr', 'productArr'));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句