📅  最后修改于: 2023-12-03 15:36:22.240000             🧑  作者: Mango
在 Laravel 中,通过模型来操作数据库是非常常见的操作方式,而在不同的场景下,我们需要从数据库中获取的数据也不尽相同。因此,在这篇文章中,我们将会讨论如何使用 Laravel 中的模型来从数据库中获取数据。
使用 Laravel 中的模型来基本查询数据库是非常简单的。首先,在模型中引用被操作的数据表,然后我们就可以使用模型提供的一些查询方法来对数据进行操作。
在模型中可以使用以下方法进行查询:
all()
:获取所有数据find($id)
:通过 ID 获取单个数据findOrFail($id)
:通过 ID 获取单个数据,若未找到则抛出异常where($column, $operator, $value)
:添加 where 条件whereIn($column, $values)
:添加 where in 条件orderBy($column, $direction = 'asc')
:添加排序条件take($value)
:限制查询结果数量skip($value)
:跳过指定数量的结果示例代码:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users'; // 引用 users 表
public function getAllUsers()
{
return $this->all(); // 获取所有用户
}
public function getUserById($id)
{
return $this->find($id); // 通过 ID 获取用户
}
public function findUserOrFail($id)
{
return $this->findOrFail($id); // 通过 ID 获取用户,若未找到则抛出异常
}
public function getUsersByEmail($email)
{
return $this->where('email', $email)->get(); // 通过 email 获取用户
}
public function getUsersByStatus($status)
{
return $this->whereIn('status', $status)->orderBy('created_at')->get(); // 通过 status 获取用户,并按创建时间排序
}
public function getLimitedUsers($limit)
{
return $this->take($limit)->get(); // 限制查询结果数量
}
public function getSkippedUsers($skip)
{
return $this->skip($skip)->get(); // 跳过指定数量的结果
}
}
在数据库中,表与表之间存在着关联关系,因此当我们需要获取某些数据时,有时候需要获取与该数据关联的其他数据。使用 Laravel 中的模型来进行关联查询同样也是非常方便的。
在模型中可以使用以下方法进行关联查询:
hasOne($related, $foreignKey = null, $localKey = null)
:建立一对一关联关系belongsTo($related, $foreignKey = null, $ownerKey = null, $relation = null)
:建立属于关联关系hasMany($related, $foreignKey = null, $localKey = null)
:建立一对多关联关系belongsToMany($related, $table = null, $foreignKey = null, $relatedKey = null, $parentKey = null, $relatedKey = null, $relation = null)
:建立多对多关联关系示例代码:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users';
public function phone()
{
return $this->hasOne('App\Models\Phone'); // 建立一对一关联关系
}
public function country()
{
return $this->belongsTo('App\Models\Country'); // 建立属于关联关系
}
public function posts()
{
return $this->hasMany('App\Models\Post'); // 建立一对多关联关系
}
public function roles()
{
return $this->belongsToMany('App\Models\Role'); // 建立多对多关联关系
}
}
在 Laravel 中,可以使用查询作用域对模型的查询进行限制。查询作用域本质上是一个方法,它被定义在模型中,并返回一个查询对象,使我们可以在模型的查询逻辑中以更清晰、更简洁的方式重复使用它。
在模型中可以使用以下方法进行定义和使用查询作用域:
scopeName($query, $value)
:定义查询作用域$this->name($query, $value)
:使用查询作用域示例代码:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
protected $table = 'users';
public function scopeActive($query)
{
return $query->where('status', 'active'); // 定义查询作用域
}
public function activeUsers()
{
return $this->active()->get(); // 使用查询作用域
}
}
以上就是使用 Laravel 中的模型从数据库中获取数据的基本方法。当然,这只是冰山一角。Laravel 中的模型还有许多高级查询和操作,希望本文能为您提供良好的参考和指导。