• laravel如何通过DB获取一条数据并转成数组


    在 Laravel 中,你可以使用原生数据库查询构建器(DB facade)来获取一条数据,并将其转换为数组。这可以通过在查询链的末尾调用 first() 方法后,使用 toArray() 方法来实现。first() 方法会返回一个 StdClass 对象(如果找到数据的话),然后你可以调用 toArray() 方法将这个对象转换为数组。

    以下是一个示例,展示了如何通过 DB 门面获取一条数据并将其转换为数组:

    use Illuminate\Support\Facades\DB;
    
    // 获取一条数据并转换为数组
    $userArray = DB::table('users')
                   ->where('id', 1)
                   ->first() // 获取第一条记录作为对象
                   ->toArray(); // 将对象转换为数组
    
    // 输出数组内容
    print_r($userArray);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    然而,在上面的代码中,first() 方法已经返回了一个对象,而这个对象本身并不具有 toArray() 方法。因此,如果你想要得到一个数组而不是对象,你应该直接在 first() 方法之前调用 get() 方法,并传递一个限制条件来只获取一条记录,然后再调用 toArray()。但这样其实是不必要的,因为 first() 已经返回了第一条记录。

    如果你只是想获取一个数组而不是对象,你可以简单地访问对象的属性,因为当你尝试访问对象的属性时,Laravel 会自动将其转换为数组(如果可能的话)。但如果你确实需要整个结果集作为数组(即使它只包含一个元素),你可以这样做:

    use Illuminate\Support\Facades\DB;
    
    // 获取一条数据作为数组
    $userArray = DB::table('users')
                   ->where('id', 1)
                   ->first() // 获取第一条记录作为对象
                   ? (array) $user // 如果对象存在,则转换为数组
                   : null; // 如果不存在,则返回 null
    
    // 输出数组内容
    print_r($userArray);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在上面的代码中,我们使用了一个三元运算符来检查 first() 是否返回了一个对象。如果是,我们使用类型强制转换 (array) 来将其转换为数组;如果不是(即没有找到记录),我们返回 null

    但是,通常情况下,你只需要直接访问对象的属性即可,Laravel 会自动处理转换。如果你确实需要整个结果集作为数组(比如,你想确保始终得到一个数组,即使结果集为空),你可以使用 get() 方法并限制结果数量为 1,然后再转换为数组:

    $userArray = DB::table('users')
                   ->where('id', 1)
                   ->take(1) // 限制结果数量为 1
                   ->get() // 获取结果集
                   ->toArray(); // 将结果集转换为数组
    
    print_r($userArray);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这将返回一个包含单个元素的数组,即使只找到一条记录。如果没有找到任何记录,数组将是空的。

  • 相关阅读:
    cdh集群搭建(6.3)
    死锁的发生与避免
    Python---练习:求世界杯小组赛的总成绩(涉及:布尔类型转换为整型)
    【无标题】
    十、SpringBoot + Jwt + Vue 权限管理系统bug解决
    本地部署Ollama+qwen本地大语言模型Web交互界面
    cv2.cvtColor
    【归并排序/快排/堆排序】912. 排序数组
    2023NOIP A层联测9-紫罗兰
    2023_Spark_实验二十:SparkStreaming累加计算单词频率
  • 原文地址:https://blog.csdn.net/itopit/article/details/137351426