一、查询数据
在开始循环查询结果之前,需要先查询数据。laravel 提供了 eloquent orm 和 query builder 两种查询方式。eloquent orm 是一种对象关系映射,可以将数据库中的表映射成为对象,很方便地操作数据库。query builder 也是一种查询方式,它是一种建造者模式,通过链式调用的方式构建 sql 查询语句。
下面我们分别介绍一下如何使用 eloquent orm 和 query builder 查询数据。
(一)eloquent orm 查询数据
在使用 eloquent orm 查询数据时,需要先定义一个对应的 model。model 对应着数据库中的表,我们可以在 model 中定义字段、关联表以及数据操作等方法。
定义 model 例子:
namespace app\models;use illuminate\database\eloquent\model;class user extends model{ // 定义对应表的名称 protected $table = 'user'; // 定义主键名称 protected $primarykey = 'id'; // 定义可被批量赋值的字段 protected $fillable = [ 'name', 'age', 'gender' ]; // 定义关联关系等方法}
在定义好 model 后,就可以使用 eloquent orm 进行查询了。
查询所有数据:
$users = app\models\user::all();
查询一条数据:
$user = app\models\user::find(1);
根据条件查询多条数据:
$users = app\models\user::where('age', '>', 18)->get();
这里需要注意的是,eloquent orm 查询出来的结果是一个 collection 对象,而不是一个数组。collection 对象提供了很多方便的方法,可以帮助我们处理数据。
(二)query builder 查询数据
使用 query builder 查询数据,我们直接调用 db 类的方法。在使用 query builder 时,需要先调用 db 类的 table 方法来指定查询的表,然后可以通过链式调用构建 sql 查询语句。
查询所有数据:
$users = db::table('user')->get();
查询一条数据:
$user = db::table('user')->where('id', '=', 1)->first();
根据条件查询多条数据:
$users = db::table('user')->where('age', '>', 18)->get();
二、循环遍历查询结果
在查询到数据后,我们可以对查询结果进行循环遍历。可以使用 foreach 循环或者 for 循环进行遍历。
(一)使用 foreach 循环
使用 foreach 循环时,直接对查询结果(eloquent orm 查询出的 collection 对象或者 query builder 查询出的 stdclass 对象)进行循环遍历即可。
eloquent orm 示例:
$users = app\models\user::all();foreach($users as $user) { echo $user->name;}
query builder 示例:
$users = db::table('user')->get();foreach($users as $user) { echo $user->name;}
(二)使用 for 循环
使用 for 循环时,需要先将查询结果转化为数组,然后再进行遍历。
eloquent orm 示例:
$users = app\models\user::all()->toarray();$total = count($users);for($i = 0; $i < $total; ++$i) { echo $users[$i]['name'];}
query builder 示例:
$users = db::table('user')->get()->toarray();$total = count($users);for($i = 0; $i < $total; ++$i) { echo $users[$i]->name;}
总结
在本文中,我们介绍了 laravel 中 eloquent orm 和 query builder 两种方式查询数据的方法,并提供了使用 foreach 循环和 for 循环进行遍历的示例代码。在实际开发过程中,可以根据具体业务需求选择合适的方式进行数据查询和遍历。
以上就是详解laravel中循环查询结果的方法的详细内容。