zoukankan      html  css  js  c++  java
  • laravel 查询数据toArray内层无法转换的问题

    语法:get_object_var($object),返回一个数组。获取$object对象中的属性,组成一个数组

    <?php
    class person{
     public $name="王美人";
     public $age = 25;
     public $birth;
    }
    $p = new person();
    print_r(get_object_vars($p));
    ?>
    

    输出结果:

    Array ( [name] => 王美人 [age] => 25 [birth] => )

    在laravel数据库查询中使用toArray()方法外层已经转化成了数组,但是内层依然是对象的问题。

    array (size=1)
      0 => 
        object(stdClass)[1804]
          public 'id' => int 17
          public 'ip' => string '192.168.0.60' (length=12)
          public 'access_time' => int 1615625654
          public 'access_count' => int 1
          public 'last_time' => int 1615625672
    

      

    在vendorlaravelframeworksrcIlluminateSupportCollection.php中增加方法 getArrayList()

     public function toArray()
        {
            return array_map(function ($value) {
                return $value instanceof Arrayable ? $value->toArray() : $value;
            }, $this->items);
        }
    /*增加方法*/
        public function getArrayList(){
            return array_map('get_object_vars', $this->items);
    
        }
    

    查询时使用:

    DB::table('api_log')->select('id','ip','access_time','access_count','last_time')->where('ip',$logInfo['ip'])->orderBy('id','desc')->limit(1)->get()->getArrayList()[0];
    

    显示结果:

    array (size=5)
      'id' => int 17
      'ip' => string '192.168.0.60' (length=12)
      'access_time' => int 1615625654
      'access_count' => int 0
      'last_time' => int 1615625654
    

      

    Array ( [name] => 王美人 [age] => 25 [birth] => )

  • 相关阅读:
    perf + 火焰图用法 小结
    忽略多年的地理基本知识
    windows7安装docker异常:looks like something went wrong in step ‘looking for vboxmanage.exe’
    我的选择
    CSS3 width的min/max-content、fill-available以及fit-content
    Redis入门与命令汇总
    javascript中的原型详解
    Promise实现及原理
    nodejs中的垃圾回收
    javascript中的闭包
  • 原文地址:https://www.cnblogs.com/fogwang/p/14529578.html
Copyright © 2011-2022 走看看