我正在用API返回帖子类别(M:M关系),我需要这些类别以逗号分隔的值形式出现 在名为category_csv
的新属性中我正在模型中设置公共$category_csv
,并在
控制器并为该属性分配csv值
在控制器中,这就是我获得类别为Product::with(['categories'])->get()
的产品的方式
这是最好的方法吗?
答案 0 :(得分:2)
请参考文档:https://laravel.com/docs/5.6/eloquent-serialization#appending-values-to-json
您可以使用这种方式将值附加到JSON,这是一个示例。
在模型中,您可以定义protected $appends = ['category_csv'];
并在模型中定义新方法
/**
* Get product categories in csv format.
*/
public function getCategoryCsvAttribute()
{
$product_category = [];
foreach ($this->categories as $category) {
$product_category[] = $category->name;
}
return $this->category_csv = implode(',', $product_category);
}
现在,当您尝试调用API get方法及其返回的内容时,它将返回带有CSV值的新属性