laravel 基础面试题-偏交谈-2020-12-10-主讲laravel查询相关

未匹配的标注

感谢关注本人公众号: 上海 PHP 自学中心
qq群(3年2万):517085546

1. 你对 Laravel 中的查询生成器了解多少?

Laravel 的数据库查询构建器为创建和运行数据库查询提供了方便,流畅的接口。它可以用于在应用程序中执行大多数数据库操作,并且可以在所有支持的数据库系统上工作。

Laravel 查询构建器使用 PDO 参数绑定来保护应用程序免受 SQL 注入攻击。无需清除作为绑定传递的字符串。

查询生成器的一些功能:

  • 分块
  • 聚合
  • Selects
  • 原生方法
  • Joins
  • Unions
  • Where 语句
  • Ordering,Grouping,Limit,& Offset

2. Eager Loading 有什么好处,何时使用?

当访问 Eloquent 关系作为属性时,关系数据是 “Lazy Loaded” 的。这意味着直到您首次访问该属性,关系数据才被实际加载。但是,Eloquent 可以在查询父模型时 “Eager Load” 关系。

当我们有嵌套对象时 (例如书本 -> 作者),Eager Loading 减轻了 N + 1 查询的问题。我们可以使用 Eager Loading 将此操作减少为仅 2 个查询。

3. 本地作用域有何用?

Scopes 允许您轻松地在模型中复用查询逻辑。要定义 scope,只需在模型方法的前面加上 scope:

class User extends Model {
    public function scopePopular($query)
    {
        return $query->where('votes', '>', 100);
    }

    public function scopeWomen($query)
    {
        return $query->whereGender('W');
    }
}

用法:

$users = User::popular()->women()->orderBy('created_at')->get();

有时您可能希望定义一个接受参数的 scope。Dynamic scopes 接受查询参数:

class User extends Model {
    public function scopeOfType($query, $type)
    {
        return $query->whereType($type);
    }
}

用法:

$users = User::ofType('member')->get();

PS: 如果全局使用,则需要注册到boot中。
scope全局使用参考链接:博客:Laravel 模型的 scope 普通用法和全局用法


防爬虫说明

禁止 学习某地爬虫,知乎爬虫,CSDN 爬虫。
本文,首发在 learnku 社区。

@author
汪春波(www.shxdledu.cn)

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 0
发起讨论 只看当前版本


暂无话题~