了解Laravel 8集合
Laravel框架有许多功能,可以缓解开发。这篇文章将重点介绍Laravel集合。我们将建立一个简单的项目来展示这个组件的全部功能。
前提条件
要跟随这篇文章,你需要一些Laravel和PHP的基本知识。
教学目的
本教程将帮助你了解Laravel集合,以及如何在一个Web项目中实现它们。
定义Laravel集合
Laravel集合可以被看作是PHP数组的修改版本。它们位于Illuminate\Support\Collection 目录中,并提供了一个封装器来处理数据数组。
我们使用下面的代码片断来创建Laravel集合。
//creating a test for collection for insights
public function collect(){
//return the collection in uppercase
return collect(['john', 'doe', null])->map(function ($test_name) {
return strtoupper($test_name);
})->reject(function ($test_name) {
return empty($test_name);
});
}
输出。
["JOHN", "DOE"] # output displayed on the browser
在上面的代码片段中, 我们使用collect() 方法从定义的数组中创建一个Collection 实例。
然后我们将每个元素修改为大写字母,并删除空元素。Laravel集合允许我们使用几种方法来分析数据。
创建Laravel集合
我们可以使用两种主要的方式来创建一个Laravel集合。
- 使用
collect()方法。
<?php
........................
//using the collect() helper
public function test_helper_collection(){
$my_test_array=['john','doe'];
return collect($my_test_array);
}
............................................
在上面的代码中, 我们声明了一个数组,并将其传递给collect() 帮助方法,然后创建Laravel集合。
- 使用一个
Collection类的实例.
<?php
...........................................
//using the Collection instance
public function test_collection_instance(){
$my_test_array=['john','doe'];
return new Collection($my_test_array);
}
..............................
在上面的代码中, 我们实例化了Illuminate\Support\Collection 类并包含了我们的数组.然后,该类将数组转换为一个集合。
Eloquent ORM集合
ORM(Object Relational Mapping)是一种数据库操作技术。因此,我们将使用Eloquent ORM ,将这些数据作为一个集合返回。
让我们创建一个简单的数据库与假数据,并尝试使用Laravel集合来操作它。
第一步是编辑我们项目的environmental variables, 如下图所示:
..............................................
DB_CONNECTION=mysql # we're using MySQL but you can modify it to meet your requirements
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=collections
DB_USERNAME=EnterYourUsername
DB_PASSWORD=EnterYourDBPassword
...............................................
现在, 让我们把我们的User 表作为种子, 如下所示:
# create user seeder
php artisan make: seeder UserSeeder
然后编辑database/seeders/userSeeder ,如下所示。
<?php
............................................
/**
* here, we are running the database seeds to create random users.
*
* @return void
*/
public function run()
{
................................................
//
DB::table('users')->insert([
//generate random string name with 8 characters
'name' => Str::random(8),
//generate random string email with 6 characters
'email' => Str::random(6).'@gmail.com',
//hasing the password
'password' => Hash::make('password'),
]);
}
.....................................
在database/seeders/DatabaseSeeder 文件中, 添加以下代码:
<?php
..............................................
/* When you run db: seed, this is the seeder run by default
*
* @return void
*/
public function run()
{
// call UserSeeder upon seeding your database
$this->call([
UserSeeder::class,
]);
}
现在我们可以通过运行下面的命令对数据库进行播种。
php artisan db:seed
# expected seeding output
Seeding: Database\Seeders\UserSeeder
Seeded: Database\Seeders\UserSeeder (72.82ms)
Database seeding completed successfully.
# if you don't get this output, check if you have added the UserSeeder in the DatabaseSeeder call method
由于我们已经设置了我们的逻辑,现在让我们查询我们的数据库以返回所有的用户。
//get users from db
public function get_db_users(){
dd(User::all());
}
输出。

在上面的图片中,lluminate\Database\Eloquent\Collection {#1210 ▶} 类返回一个集合。因此,我们可以使用不同的方法来分析数据。
寻找数据
在本节中,我们将学习如何在一个集合中寻找数据。
下面将讨论我们可以使用的一些技术。
where()方法。在这个方法中,我们使用key/value对过滤一个集合。
让我们创建一个带有数据的集合,并使用where() 方法过滤它。
.................................................
///filter a collection using the where() method
public function apply_where_on_collections(){
$collection = collect([
['Tutorial' => 'Laravel Collection', 'price' => 250],
['Tutorial' => 'Introduction to Laravel 8', 'price' => 140],
['Tutorial' => 'Laravel Cron Jobs', 'price' => 300],
['Tutorial' => 'Laravel Tests', 'price' => 400],
]);
//filter to get a tutorial which costs $250.
$filtered = $collection->where('price', 250);
//return the result
return $filtered->all();
}
........................................
结果。
[{"Tutorial":"Laravel Collection","price":250}]
contains()方法。我们使用contains()方法来检查一个给定的项目在一个集合中是否可用。
让我们看一下下面的例子。
<?php
..............................
//filter method to check item exisitence
public function apply_contains_on_collections(){
$collection = collect([
['Tutorial' => 'Laravel Collection', 'price' => 250],
['Tutorial' => 'Introduction to Laravel 8', 'price' => 140],
['Tutorial' => 'Laravel Cron Jobs', 'price' => 300],
['Tutorial' => 'Laravel Tests', 'price' => 400],
]);
//returns true/false
dd($collection->contains('Tutorial','Laravel Collection'));
}
...............................................
输出。
True
在上面的例子中,我们检查了一个项目是否存在于集合中,并根据其可用性返回一个布尔值。
总结
在本教程中, 我们已经学会了如何使用Laravel集合。我们还学习了如何设置一个数据库并使用集合检索数据。
现在你可以使用这些知识来制作高质量的Laravel应用程序。