如何使用 laravel 和 mysql 数据库获取数组中的数组?

Posted

技术标签:

【中文标题】如何使用 laravel 和 mysql 数据库获取数组中的数组?【英文标题】:How to get array in array with laravel and mysql database? 【发布时间】:2021-11-07 04:14:17 【问题描述】:

我在后端使用 Laravel (php) 和 mysql。我正在创建用于设置和从数据库获取信息的方法。这些信息以 json 格式发送到前端。

我可以发送如下表格信息:

[
    
        "id": 4,
        "name": "Max"
    ,
    
        "id": 5,
        "name": "Eric"
    
]

为此,我使用 laravel 方法,例如:DB::table('user')->select('user.id', 'user.name')->get();

但是我做前端的朋友想要下面的 json 代码:

[
    
        "id": 4,
        "name": "Max"
        "specific_user_price":
                                "S":5.00,
                                "M":6.00,
                                "XL":8.00
                              
    ,
    
        "id": 5,
        "name": "Eric"
        "specific_user_price":
                                "S":5.50,
                                "M":10.00,
                                "XL":15.00
                              
    
]

"specific_user_price 是一个表,"S"、"M"、"XL" 是根据用户具有不同值的列。我不知道如何在查询中创建 specific_user_price 作为数组。我可以使用group_concat 但他需要上面显示的 json。

我的想法是在用户“size S price”、“size M price”和“size XL price”中创建额外的列。但是我的朋友希望这些值作为一个自己的数组组,因为有些用户只能访问一种大小,所以他会得到空值。

任何想法我可以使用 PHP 或 Laravel 中的哪种方法?或者是否有一种 MySQL 方法可以在查询中创建这样的东西?

【问题讨论】:

你可以使用 laravel 资源:laravel.com/docs/8.x/eloquent-resources 这样你可以设置任何格式的响应 我假设价格表有一个 user_id? 对于 specific_user_price 您应该在用户和价格之间建立任何关系 【参考方案1】:

首先使用模型,开箱即用更容易使用。像这样定义您的 User 模型,并与价格建立关系。

use Illuminate\Database\Eloquent\Model;

class User extends Model

    public function specificUserPrice() 
        return $this->hasOne(UserPrice::class);
    

您还需要定义 UserPrice 模型。

use Illuminate\Database\Eloquent\Model;

class SpecificUserPrice extends Model


Laravel 自动转换模型,您可以在控制器中使用以下代码。

public function index()

    return User::with('specificUserPrice')->get();

【讨论】:

【参考方案2】:

DB::table('user')->select(['id', 4],['name','max'])->get();

【讨论】:

【参考方案3】:

DB::table('user')[0]->get()

这将为您获取数组中的第一个元素

【讨论】:

以上是关于如何使用 laravel 和 mysql 数据库获取数组中的数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何设置 MySql 工作台以与 laravel 一起使用?

如何使用 Laravel 和 MySQL 获取大量记录?

如何使用 Laravel 框架更新 MySQL 中的 json 数据?

如何优化使用 PHP 或 Mysql 或 Laravel 将 12K 的 JSON 插入数据库

如何使用 Laravel 框架执行 MySQL 查询?

确保我在 laravel 5 中获得了正确的外键语法