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

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

相信很多人在学习 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(三)——模型间关系(关联

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部