微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php-Laravel雄辩-如何加入表格

我正在为我的应用程序开发API.

我正在尝试从数据库提取项目并以JSON对象返回它们,
我的项目表如下所示:

Items
-id
-name
-description
-price
-currency_id
-company_id

这是我得到物品的方式:

$rows = Company::where('guid',$guid)
                ->first()
                ->items()
                ->orderBy('name', $sort_order);

我想用包含货币表所有列的货币对象替换currency_id

所以我的结果将是这样的:

[
  {
    'id':'1',
    'name':'name',
    'description': 'example',
    'price':'100',
    'currency':{
     'id':'1',
     'name':'usd',
     'symbol': '$'
     }
  }
]

更新:
这是我的货币表:

id
name
symbol
code

解决方法:

编辑2:由于存在分页和与查询搜索集成,因此用户的问题比这更复杂.帮助了https://pastebin.com/ppRH3eyx

编辑:我已经测试了代码.所以在这里.

公司模式

public function items()
{
    return $this->hasMany(Item::class);
}

在项目模型中

public function currency()
{
    return $this->belongsTo(Currency::class);
}

控制器逻辑

$items = Company::with(['items' => function($query) use ($sort_order) {
    $query->with('currency')->orderBy('name', $sort_order);
}])
    ->where('guid', $guid)
    ->first()
    ->items;

测试数据结果

[
    {
        "id": 2,
        "name": "Toy",
        "description": "Random text 2",
        "price": 150,
        "company_id": 1,
        "currency_id": 1,
        "currency": {
            "id": 1,
            "name": "usd",
            "symbol": "$",
            "code": "USD"
        }
    },
    {
        "id": 1,
        "name": "Phone",
        "description": "Random text",
        "price": 100,
        "company_id": 1,
        "currency_id": 1,
        "currency": {
            "id": 1,
            "name": "usd",
            "symbol": "$",
            "code": "USD"
        }
    }
]

尝试这个.

$rows = Company::with('items.currency')
    ->where('guid', $guid)
    ->first()
    ->items()
    ->orderBy('name', $sort_order);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。