在 laravel 中,如何将额外数据传递给突变体和访问器
我试图做的是将每篇文章的注释附加到articles对象上,但问题是我每次都需要请求不同数量的评论。
出于某种原因,我需要使用突变体,因为有时我请求50篇文章,我不想遍历结果并附加注释。
因此,是否可以执行以下操作以及如何传递额外的参数。
这是模型:
class Article extends Model
{
protected $appends = ['user', 'comments', 'media'];
public function getCommentsAttribute($data, $maxNumberOfComments = 0)
{
// I need to set maxNumberOfComments
return $this->comments()->paginate($maxNumberOfComments);
}
}
这是控制器:
class PostsController extends Controller
{
public function index()
{
//This will automatically append the comments to each article but I
//have no control over the number of comments
$posts = Post::user()->paginate(10);
return $posts;
}
}
我不想做的是:
class PostsController extends Controller
{
public function index()
{
$articles = Post::user()->all();
$number = 5;
User::find(1)->articles()->map(function(Article $article) {
$article['comments'] = $article->getCommnets($number);
return $article;
});
return Response::json($articles);
}
}
有没有更好的方法来做到这一点?因为我经常使用它,它没有接缝正确。