Laravel连接表与关系模型返回为JSON

谢赫·萨米姆·雷扎

我有三个表:

  • products表(idname
  • ingredients表(idingredient_name
  • products_ingredients表(product_idingredient_id

我在产品中定义了一个关系

public function ingredients(){
    return $this->hasMany('App\ProductIngredient','product_id','id');
}

当我列出使用的产品时

$products = Product::where('category_id',$cat->id)->with('ingredients')->get();

我得到这个输出

"products": [{
    "id": 1,
    "name": "Hesp",
    "category_id": 1,
    "ingredients": [{
        "id": 41,
        "product_id": 1,
        "ingredient_id": 4,
    },
    {
        "id": 42,
        "product_id": 1,
        "ingredient_id": 5,
    }]
}]

哪个是对的。

我想要的是在这样的配料列表中添加配料名称

"products": [{
    "id": 1,
    "name": "Hesp",
    "category_id": 1,
    "ingredients": [{
        "id": 41,
        "product_id": 1,
        "ingredient_id": 4,
        "ingredient_name": "some name" // I want to add this field
    },
    {
        "id": 42,
        "product_id": 1,
        "ingredient_id": 5,
        "ingredient_name": "some name" // I want to add this field 
    }]
}]

我想将其返回为JSON,以便在API中使用,而不是在刀片服务器中调用其他关系。

我该如何实现?

miken32

您实现了多对多关系都错了。根据文档

多对多关系是通过编写一种方法来定义的,该方法可返回belongsToMany方法的结果。

...

要定义多对多关系的逆关系,请在相关模型上放置另一个对belongsToMany的调用。

class Product extends Model
{
    public function ingredients()
    {
        return $this->belongsToMany('App\Ingredient', 'products_ingredients');
    }
}

class Ingredient extends Model
{
    public function products()
    {
         return $this->belongsToMany('App\Product', 'products_ingredients');
    }
}

请注意,相关模型是的第一个参数belongsToMany()不需要为简单的数据透视表创建模型。由于您未正确命名数据透视表,因此必须将其指定为的第二个参数belongsToMany()默认名称是字母顺序的单数模型,即ingredient_product


您的输出现在应该看起来像这样,包括ingredients表中的值,而不是数据透视表。

"products": [{
    "id": 1,
    "name": "Hesp",
    "category_id": 1,
    "ingredients": [{
        "id": 4,
        "ingredient_name": "some name"
    },
    {
        "id": 5,
        "ingredient_name": "some name"
    }]
}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

通过关系表连接的 Laravel 模型

来自分类Dev

Laravel 在 JSON 中返回模型关系

来自分类Dev

Laravel模型返回空关系?

来自分类Dev

Laravel Eloquent 连接表关系

来自分类Dev

Laravel多模型关系返回计数

来自分类Dev

Laravel中关系模型的返回计数

来自分类Dev

3个表之间的Laravel模型关系

来自分类Dev

Laravel 关系 - 多表连接 - 4 个表

来自分类Dev

Eloquent / Laravel:嵌套的延迟渴望加载,但返回多个模型的关系

来自分类Dev

如何在 Laravel 中返回带有他的关系的模型?

来自分类Dev

Laravel 5.6 如何获取模型的多态关系,返回null

来自分类Dev

Laravel-为关系模型设置默认值

来自分类Dev

Laravel-为关系模型设置默认值

来自分类Dev

Laravel 连接表不返回数据

来自分类Dev

Laravel 5.4 - 从连接表返回单行

来自分类Dev

Laravel雄辩的模型如何从关系表中获取数据

来自分类Dev

不同模型使用相同文件表的 Laravel 关系

来自分类Dev

Laravel-将关联的模型返回给json

来自分类Dev

Laravel Eloquent模型返回的特定json格式

来自分类Dev

Laravel Eloquent模型返回的特定json格式

来自分类Dev

嵌套模型的 Laravel 模型关系

来自分类Dev

Laravel类别模型关系

来自分类Dev

Laravel中的关系模型?

来自分类Dev

Laravel 4模型关系

来自分类Dev

Laravel中的模型关系

来自分类Dev

Laravel与多个模型的关系

来自分类Dev

Laravel 模型中的关系

来自分类Dev

Laravel eloquent 模型关系

来自分类Dev

Laravel 模型关系 hasOne