首页 > 解决方案 > 如果条件为真,Laravel 显示关系

问题描述

我对 Laravel 的关系有一些问题。我想保护一个模型,如果用户无权访问它,他就看不到它。它看起来像:

 public function product(){
            return $this->hasOne(Product::class, 'id', 'product_id')->with('category', 'images');
        }
    }

所以我尝试了类似的东西:

public function product(){
        $user = Auth::check();
        if($user){
            return $this->hasOne(Product::class, 'id', 'product_id')->with('category', 'images');
        }
    }

除了 Auth 检查只是为了测试,我需要在这里检查权限,所以我会调用另一个返回 true 或 false 的函数,我将传递 product_id 给它,检查用户是否有权访问该产品,仅此而已。

所以在那种情况下,它总是像这样返回:

在 null 上调用成员函数 addEagerConstraints()

我相信我必须返回一些东西,而不是什么都没有,但没有任何接缝可以工作。但这个想法是在模型中做,我有充分的理由在这里做。任何想法如何处理它?

标签: phplaravel

解决方案


推荐阅读