资讯专栏INFORMATION COLUMN

Laravel 的 ORM 返回的数据类型小结

LeviDing / 3010人阅读

摘要:一简介的数据库查询构造器提供了一个方便流畅的接口,用来创建及运行数据库查询语句。的查询构造器使用参数绑定,来保护你的应用程序免受注入的攻击。和返回的是影响行数,即失败为,成功为删除行数。

相信很多人在学习 Laravel 时,会对 ORM 返回的数据类型产生混淆,如返回集合,模或者整数类型,下面将对增删改查操作进行一个小结。

一、简介

Laravel 的数据库查询构造器提供了一个方便、流畅的接口,用来创建及运行数据库查询语句。它能用来执行应用程序中的大部分数据库操作,且能在所有被支持的数据库系统中使用。

Laravel 的查询构造器使用 PDO 参数绑定,来保护你的应用程序免受 SQL 注入的攻击。在绑定传入字符串前不需要清理它们。

二、查询 1、从数据表中获取所有的数据列

1. 查询中的 getall 方法返回的是集合。

示例#

你可以使用 DB facade 的 table 方法开始查询。这个 table 方法针对查询表返回一个查询构造器实例,允许你在查询时链式调用更多约束,并使用 get方法获取最终结果:

 public function index()
 {
   $users = DB::table("users")->get();
   return view("user.index", ["users" => $users]);
 }
        

get 方法会返回一个 IlluminateSupportCollection 结果集,其中每个结果都是一个 PHP StdClass 对象的实例。您可以通过访问列中对象的属性访问每个列的值:

foreach ($users as $user) {
    echo $user->name;
}

2.当没有数据时,返回的是空集合。
集合可以在任何时候调用 toArray 方法,如果查询到的结果为空,得到的是[],可以用 empty() 方法判断是否有数据。

2、从数据表中获取单个列或行

如果你只需要从数据表中获取一行数据,则可以使用 first 方法。这个方法将返回单个 StdClass 对象:

$user = DB::table("users")->where("name", "John")->first();

echo $user->name;

如果你不需要一整行数据,则可以使用 value 方法来从单条记录中取出单个值。此方法将直接返回字段的值:

$email = DB::table("users")->where("name", "John")->value("email");

first 如果查不到数据,返回的是 null,可用 empty 判断。

三、插入数据

添加数据的 create、insert 方法与查询中的 first 方法,成功返回的是模。

创建、插入成功返回的是创建插入的那条数据的模型。

first如果查不到数据,返回的是null,可用empty判断。

创建和插入,如果失败,会报错(当传入的字段与数据库对不上时)。

如果传入的字段与数据库字段一致,插入或创建失败会返回false

判断是否插入成功,用(! $result)判断,(感叹号和$result)间保留一个空格。判断完成后才可调用toArray。

四、更新与删除 1. update和delete,destroy方法,返回的是影响行数。

在 laravel 中,update 方法永远返回大于1的行数,因为 updated_at 字段总是会被更新。

如果要避免这种情况,请在模型中关闭 laravel 的自动维护字段的属性。

2. destory和delete返回的是影响行数,即失败为0,成功为删除行数。

相关文章:
Laravel 的一点经验总结
深入理解 Laravel Eloquent(三)——模型间关系(关联)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/22654.html

相关文章

  • 2015 年度小结(技术方面)

    摘要:因为路由层面受业务影响很大,经常修改一些功能的行为,所以后来大部分测试都是针对层面的单元测试。在我了解的过程中,我发现中文网络上对的讨论非常分散,于是我创建了中文社区,到年末已经有个注册用户和个帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 从 2014 年末开始开发的一个互联网金融项目终于在今年三月份上线了,这是一个 Node...

    宋华 评论0 收藏0
  • 2015 年度小结(技术方面)

    摘要:因为路由层面受业务影响很大,经常修改一些功能的行为,所以后来大部分测试都是针对层面的单元测试。在我了解的过程中,我发现中文网络上对的讨论非常分散,于是我创建了中文社区,到年末已经有个注册用户和个帖子了。 https://jysperm.me/2016/02/programming-of-2015/ 从 2014 年末开始开发的一个互联网金融项目终于在今年三月份上线了,这是一个 Node...

    Nosee 评论0 收藏0
  • windows下laravel5.5手写教程2路由Eloquent ORM操作(适合初学者)

    摘要:一路由目录众所周知,对于我们熟知的任何一款框架,例如路由系统都是极其重要的存在。文件用于定义界面的路由。定义在中的路由都是无状态的,并且被分配了中间件组。生成的控制器为每个行为保留了方法,同时还包括了处理动作和的声明注释。 一、路由目录 众所周知,对于我们熟知的任何一款PHP框架,例如TP、CI、YII、路由系统都是极其重要的存在。 对于laravel框架也一样,对于数据库的操作,无非...

    BlackFlagBin 评论0 收藏0
  • laravel 数据迁移与 Eloquent ORM

    摘要:同时使用数据迁移管理数据库,可以与团队进行共享以及编辑。实际项目根据需求进行记录,以及选择存储方式。使用命令可以很方便的创建模型以及数据迁移。,参数在创建模型的同时也创建了数据迁移文件。参考资料数据库操作迁移快速入门。 导语 数据库可以说是后端开发最常用,也是最重要的部分。laravel 提供了很实用的 Eloquent ORM 模型类,简单、直观的与数据库进行交互。同时使用数据迁移管...

    tulayang 评论0 收藏0
  • LaravelLaravel 框架关键技术解析·读书笔记(一)

    摘要:判断是否存在构造函数,不存在直接实例化,存在则通过来获取输入函数,并有相应的方法解决依赖参数问题,实现依赖注入。 Laravel 框架关键技术解析·读书笔记(一) 第一章 入口文件 请求访问的入口文件,主要完成几部分工作,分别是: 自动加载函数的添加 服务器实例化与服务注册 路由加载 请求实例化与路由分发 相应生成与发送 其中,自动加载函数用于包含引用文件,改文件是composer...

    CocoaChina 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<