baiyi233

baiyi233

这家伙有点懒,还没写个性签名!

  • 财富值80
  • 威望值0
  • 总积分160

个人信息

  • 2020-11-11 已签到
    连续签到1天,获得了5个金钱
  • 2020-04-07 已签到
    连续签到3天,获得了15个金钱
  • 2020-04-06 已签到
    连续签到2天,获得了10个金钱
  • 2020-04-05 已签到
    连续签到1天,获得了5个金钱
  • 赞了回答

    one()就像它的名字一样,返回一条记录,它是yii2框架自己的语法;
    limit是mysql数据库特有的语法,都是查询一条记录。
    既然一个是框架的语法,一个是数据库的语法,所以它们各自在自己的世界毫不冲突地生活着。
    one()的确是返回一条记录,这一点和limit(1)算是巧合了。但是这条记录一般是一维的,可以是一个AR模型或者普通对象。如果加上了asArray(),那么就是类似["name"=>"liushifu",'age'=>'66','sex'=>'man','hobby'=>'women']这样的。
    limit是mysql数据库上的语法。可以取得范围的记录,比如limit(2,3)。limit(1)是常用的,返回一条记录。如果你不用one()而是使用了all()方法。

    $data = User::find()
        ->where(['id' => 100])
        ->select('name')
        ->limit(1)
        ->all();//one()替换
    

    那么它返回数组,但是它的格式是一个二维数组,是一个对象组成的数组。类似

    $data[0]["name"=>"liushifu",'age'=>'66','sex'=>'man','hobby'=>'women'];
    

    所以,我觉得他俩最大的区别就是格式问题,一个返回二维,一个返回一维的。
    至于返回的这个【第一条】如何定义,什么范围limit(2,3),排序orderby等等的,都交给数据库语法来完成,确定好之后,如果是一维数据就用one(),二维数据就用all()。
    咋样,明白不?

  • 2019-02-03 已签到
    连续签到1天,获得了5个金钱
  • 2019-01-31 已签到
    连续签到1天,获得了5个金钱
  • 赞了评论

    来个php的

  • 2019-01-09 已签到
    连续签到1天,获得了5个金钱
  • 2018-11-15 已签到
    连续签到1天,获得了5个金钱
助理 等级规则
160/200
资料完整度
10/100
用户活跃度
0/100

Ta的关注

0

Ta的粉丝

0

Ta的访客

5