laravel - Laravel - 返回控制器中参数的相关模型
问题描述
我有以下路线:
Route::get('/api/products/{product}', 'ProductController@get');
我的产品模型如下所示:
class Product extends Model
{
public function ingredients()
{
return $this->belongsToMany(Ingredient::class)->withPivot('value');
}
}
在我的控制器中,方法是:
public function get(Product $product)
{
return $product;
}
这仅将Product
对象的属性作为 JSON 返回。我还想返回相关的成分和数据透视表值(就像使用with
方法一样),以及可能的其他相关模型。
return $product->with('ingredients')
创建所有产品的集合,因此这实际上不起作用,我必须按产品 ID 再次过滤它。我显然可以自己构建 JSON,但如果我想要包含多个相关模型,这将变得乏味。有没有简单的方法来实现这一点?
解决方案
你有三个选择:
$with
在模型中使用class Product extends Model { protected $with = ['ingredients']; public function ingredients() { return $this->belongsToMany(Ingredient::class)->withPivot('value'); } }
加载关系并返回产品:
public function get(Product $product) { $product->ingredients; return $product; }
在产品上使用
load
方法:public function get(Product $product) { return $product->load('ingredients'); }
推荐阅读
- forms - Google Apps 脚本服务器端无法访问在 HTMLService 表单中提交的文件
- flutter - 获取 YouTube 音频颤振
- regex - 逗号分隔列表中复杂字符串的正则表达式
- node.js - NPM 7 - 将标志传递给脚本
- rust - reqwest::blocking 没有找到名为“text”的方法
- python - Selenium 中的 Headless Chrome 默认不启用 Cookie
- reactjs - 是的,Formik :类型实例化太深并且可能是无限的。TS2589
- javascript - 调用单击事件时更改变量内部值的可能方法?
- javascript - 如何确保在隐藏启动屏幕之前加载主屏幕上的所有资产 React Native
- python - 在 Plotly 图中重新排序轴