zoukankan      html  css  js  c++  java
  • laravel5.1关于lists函数的bug

    查询语句为:

    class DateAttrModel extends BaseModel{
          ……
          static function getDays(……){
            $days = self::lists('date’);      
            …………
                   return $days;
          }
    }
    if(in_array($date, DateAttrModel::getDays(……))){      //这里报错,看意思是in_array的第二个参数应该是一个数组却传递了一个对象
          ……
    }


    原因: 

    在laravel中有两种Builder类都有成员函数lists:查询构造器(基类为IlluminateDatabaseQueryBuilder)和Eloquent(IlluminateDatabaseEloquentBuilder)。 在laravel 4.2和5.1中查询构造器的lists函数均返回array;但是在laravel 5.1中Eloquent的lists返回的是collection对象类型,而laravel 4.2中Eloquent的lists返回的是array类型。 而这里的BaseModel是继承自IlluminateDatabaseEloquentModel类,故上面调用lists返回的是collection对象而非数组类型,故在使用中当做数组来操作是错误的。

    解决方式: 

    正确的用法是将colletion对象转为array类型,collection对象转为数组可使用函数toArray():

       $days = self::lists('date’)->toArray();
  • 相关阅读:
    大数据的前景?
    PriorityBlockingQueue深度解析(好文)
    深入CAS原理
    common-lang3工具类-使用手册
    gitlab搭建
    RestTemplate转码bug
    论tigergraph边的方向性
    关于java的wait方法的深入分析
    openjdk的源码下载方式
    一个奇怪的urlencode转码问题
  • 原文地址:https://www.cnblogs.com/huangshoushi/p/6101057.html
Copyright © 2011-2022 走看看