简体   繁体   English

Laravel:如何制作关系访问器

[英]Laravel: How to make relationship accessor

I have relations in model UserTasks to Review model我在模型UserTasksReview模型有关系

public function reviews()
{
    return $this->hasMany(Review::class,'task_id');
}

I'm loading reviews using with我正在使用with加载评论

UserTasks::with('reviews');

And I want to format reviews relation output using accessors in UserTasks model我想使用UserTasks模型中的访问器格式化reviews关系输出

public function getReviewsAttribute($reviews)
{
    // FILTER AND FORMAT RELATION OUTPUT
    foreach ($reviews as &$review) {
        if ($review['active'] == true) {
            $review['cid'] = bcrypt($this->cid);
            $reviews = [$review];
        }
    }
    return $reviews;
}

Unfortunately, this does not work不幸的是,这不起作用

Relationships loaded using with do not pay attention to accessor使用with加载的关系不注意访问器

I read that it is almost impossible, but maybe someone know the way to format loaded relations using accessors我读到这几乎是不可能的,但也许有人知道使用访问器格式化加载关系的方法

If you want all reviews in UserTasks model than you can try this如果你想要UserTasks模型中的所有评论,你可以试试这个

public function getReviewsAttribute($reviews)
{
    $reviews = $this->reviews;
    foreach ($reviews as $rewiew) {
        // DO SOMETHING WITH REVIEWS
    }
    return $reviews; 
}

By $reviews = Review::all();通过$reviews = Review::all(); this you will get all reviews and you can do whatever you want to do.您将获得所有评论,您可以做任何您想做的事情。

Don't forget to add namespace at top of your model like use Review;(give your namespace)不要忘记在模型顶部添加命名空间,例如 use Review;(给出你的命名空间)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM