首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

完善你的Laravel异常处理

这里的ExceptionHandler就是 \App\Exceptions\Handler类的实例,它是在项目最开始注册到服务容器中的: // bootstrap/app.php /* |------...Illuminate\Database\QueryException Laravel中执行SQL语句发生错误时会抛出此异常,它也是使用率最高的异常,用来捕获SQL执行错误,比方执行Update语句时很多人喜欢判断...( find和 first找不到数据时会返回NULL)。...但是自带的异常处理器的方法并不好用,很多时候我们想把异常上报到邮件或者是错误日志系统中,下面的例子是将异常上报到Sentry系统中,Sentry是一个错误收集服务非常好用: public function...接口类实例,在这种情景下我们因为捕获到了 QueryException的异常实例而抛出了 UserManagerException的实例,然后通过这个参数将 QueryException实例传递给 PHP

2.8K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入研究 Laravel ORM (Laravel Eloquent) 系统 (一) – 概要

    本文作为 Laravel ORM 系统的研究开篇,主要对 Laravel ORM 系统的主要功能、依赖的第三方类库、系统的目录结构及对应目录所实现的功能,进行解释说明。...此外还提供在 Laravel 框架内使用的数据库抽象层 DB 类。 非但如此,database 组件提供了能在非 Laravel 框架以外的项目使用接口 Capsule 类。...即 Laravel 契约接口,定义了 Laravel 框架核心服务的契约接口 paragonie/random_compat 是一套提供 random_int() 和 random_byte() 等函数在内的随机字符生成类库...ConnectionResolver.php @TODO |---- DatabaseManager.php 供 DatabaseServiceProvider 服务器提供者使用的数据库管理器...SQLiteConnection.php SQLite 数据库连接类 |---- SqlServerConnection.php SQL Server 数据库连接类 |---- QueryException.php

    5K20

    搭建sentry追踪laravel生产环境bug

    安装 对于 sentry 不了解的同学,先到官网看下 demo 演示,官方也提供免费服务,只是每月的异常提醒次数有限,仅作为体验。...此外由于是国外服务器,由于众所周知的原因,访问并不方便,幸好这是开源产品,我们可以在自己的服务器搭建 官方推荐用 docker 搭建,详细版见 官方文档 首先要安装 docker ,详情见 centos.../install.sh 构建过程中会提示你输入账号密码,用你的邮箱作为账号,以后该邮箱也用于接收邮件,奇怪的是,在构建时可以用 qq 邮箱,后面在项目中邀请成员却不能用,因此建议统一不用 qq 邮箱,可以用...163 或者 foxmail 等 安装完成后,执行以下命令让 sentry 服务在后台运行 $ docker-compose up -d 浏览器访问:http://你的服务器ip:9000 ?...: 587 重启 sentry 服务 docker-compose down && docker-compose up -d 新建 laravel 项目,按 sentry 所指示的进行配置即可 项目配置

    1.3K10

    通过 Laravel Sail 构建基于 Docker 的本地开发环境

    Laravel 官方最近发布了 Laravel Sail —— 一个轻量级的、基于 Docker 的 Laravel 本地集成开发环境,今天学院君就以 Mac 系统为例,给大家演示下如何基于 Laravel...如果之前启动了 Valet 或者 Laradock 作为本地开发环境,需要通过 valet stop 或者 docker-compose down 命令关闭对应的 Nginx、MySQL、Redis 服务...Sail 本质上是基于 Docker Compose 编排的 Docker 容器服务构建起来的 Laravel 集成开发环境(包含 PHP、MySQL、Redis),只不过针对 Laravel 项目做了上层封装和兼容...和 docker-compose 一样,你可以通过 -d 选项指定以后台守护进程的方式来启动所有相关容器服务: ?...所有容器服务启动成功后,就可以在浏览器中通过默认的 laravel.test 域名来访问这个新建的项目了: ?

    3K20

    Laravel源码解析之QueryBuilder

    我们看一下Connection的table方法,它返回了一个QueryBuilder实例, 其在实例化的时候Connection实例、Grammer实例和Processor实例会被作为参数传人QueryBuilder...$value, $operator, func_num_args() == 2 // func_num_args()为3,3个参数 ); // where()也可以传闭包作为参数...); $statement->execute(); return $statement->fetchAll(); }); 直到getPdoForSelect这个阶段Laravel...通过梳理流程我们知道: Laravel是在第一次执行SQL前去连接数据库的,之所以$pdo一开始是一个闭包因为闭包会保存创建闭包时的上下文里传递给闭包的变量,这样就能延迟加载,在用到连接数据库的时候再去执行这个闭包连上数据库...在程序中判断SQL是否执行成功最准确的方法是通过捕获 QueryException异常 Processor后置处理结果集 processor是用来对SQL执行结果进行后置处理的,默认的processor

    1.9K50

    Laravel如何使用数据库事务及捕获事务失败后的异常详解

    前言 如果大家在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法。如果在事务的闭包内抛出异常,事务将会被自动还原。...content ---------------------------/【一个开发人员,能懂服务器量好,反之一个服务器维护人员,也应该懂开发】/------------ 考点/【php教程_linux...(在laravel中使用查询构建器或者Eloquent ORM执行query时,如果失败会返回 IlluminateDatabaseQueryException 异常) 的关系(写入中间表) $newWiki->tags()->attach($tagIds); DB::commit(); } catch(QueryException...,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流

    1.7K30

    laravel 学习之路 配置config

    前面文章路由与控制器我们都了解了,现在了解一下laravel的config配置 配置项 laravel 的配置项是在根目录下的 /config 目录中,还有一个是根目录下的 .env文件 ?...我们也找到了这个 APP_NAME, 不过是作为一个参数传给了 env() 函数,我们来了解下这个函数 它是用来获取 .env 文件中的配置的 它有2个参数 第一个参数就是配置项名 第二个参数就是默认值...Laravel 在 config/database.php 文件中我们可看到数据库的配置 ?.../config 目录下的数据库的配置 laravel 5.4 以后默认使用 utf8mb4 字符集,utf8mb4 主要是用来支持 emoji 表情的,如果你的本地环境的mysql 低于5.7.7,为了防止在以后使用的过程中报如下错误...[Illuminate\Database\QueryException] SQLSTATE[42000]: Syntax error or access violation: 1071

    2.1K10

    Docker六脉神剑(四) 使用Docker-Compose进行服务编排搭建lnmp环境

    阅读本文你将知道 docker-compose的配置文件编写 dockerfile的编写 Docker-Compose提要 Docker-Compose项目是Docker官方的开源项目,负责实现对Docker...Docker-Compose的工程配置文件默认为docker-compose.yml,使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。...在工作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚至还包括负载均衡容器等。...Docker-Compose项目由Python编写,调用Docker服务提供的API来对容器进行管理。因此,只要所操作的平台支持Docker API,就可以在其上利用Compose来进行编排管理。...restart // 重启项目 docker-compose down // 会停掉容器,并删除掉容器 容器已经启动成功了,然后我们安装一个laravel项目来测试 配置Laravel项目启动实现数据库查询

    2.2K10

    Laravel Valet - macOS 极简主义者的开发环境

    Laravel Valet 介绍 2. Laravel Valet 安装 3. 测试 Laravel Valet 4. PHP 版本 5. 服务站点 6. 定制 Valet 驱动 7....服务站点 ---- 安装 Valet 后,就可以开始为应用程序提供服务了。...定制 Valet 驱动 ---- Valet 是为 Laravel 定制的开发环境,默认是不支持 ThinkPHP 等常用框架和 CMS 但是可以自己编写 Valet 驱动程序在 Valet 本身不支持的框架或...CMS 上运行 PHP 应用程序提供服务 安装 Valet 时,会在 ~/.config/valet/Drivers 目录中创建一个包含 SampleValetDriver.php,这是一个驱动程序实现示例...Valet 常用命令 ---- 命令 描述 valet list 列出所有命令 valet park 目录下的所有子目录作为访问站点 valet paths 查看所有被 park 的目录 valet forget

    4.2K30

    PHP-web框架Laravel-缓存(二)

    三、缓存驱动程序Laravel框架的缓存服务提供了多种缓存驱动程序,可以满足不同的需求。我们可以在config/cache.php配置文件中配置使用哪种缓存驱动程序。...下面是Laravel框架支持的缓存驱动程序列表:array:将数据存储在数组中,通常用于测试;file:将数据存储在文件中,可以使用本地文件系统或云存储服务(例如Amazon S3);database:...将数据存储在关系型数据库redis:将数据存储在Redis缓存服务器中;memcached:将数据存储在Memcached缓存服务器中。...下面是一个使用Redis作为缓存驱动程序的示例:作为缓存驱动程序,并通过容器注入Illuminate\Contracts\Cache\Repository接口的实例来访问缓存服务

    41121

    搭建sentry追踪生产环境bug

    以 laravel 为例,演示如何搭建 sentry sentry 虽然有提供线上服务,但收费很贵,且是国外服务器,访问并不方便,好在是开源产品,我们可以在自己的服务器搭建 官方推荐用 docker 搭建...,详细版见 官方文档 首先要安装 docker ,详情见 centos搭建docker及docker-compose 然后下载 sentry 仓库 $ git clone https://github.com.../install.sh 构建过程中会提示你输入账号密码,用你的邮箱作为账号,以后该邮箱也用于接收邮件,奇怪的是,在构建时可以用 qq 邮箱,后面在项目中邀请成员却不能用,因此建议统一不用 qq 邮箱,可以用...163 或者 foxmail 等 安装完成后,执行以下命令让 sentry 服务在后台运行 $ docker-compose up -d 浏览器访问:http://你的服务器ip:9000 ?...: 587 新建 laravel 项目,按 sentry 所指示的进行配置即可

    1.2K20

    实践搭建Sentry异常中心结合Laravel使用

    Sentry 分为服务端和客户端 SDK,前者可以直接使用它家提供的在线服务,也可以本地自行搭建;后者提供了对多种主流语言和框架的支持,包括 React、Angular、Node、Django、RoR、...Sentry 为我们提供了一个集中式异常处理的服务, 但是用 Sentry 官方服务要收费,为了节省开支就选择自己搭建一个 Sentry 服务,在搭建 Sentry 服务的时候遇到一些小问题,在这里分享一下.../install.sh # 一键启动 docker-compose up -d # 默认nginx服务暴露的端口是9000 我这里已经被占用了, so 我改了一下docker-compose.yml...的nginx端口 然后 服务器ip+端口 查看就可以登录了(登录账户是在 install 的时候会提示设置哦) ?...down docker-compose up -d 测试一下邮箱 然后看一下效果 ?

    1.9K20

    Laravel 用户认证

    现在很少见了 基于 api 的身份验证:常见于前后端分离的项目,一套api同时给前端,Android,iOS提供服务;使用token完成身份验证。...也是当下最流行的开发模式 在其核心,Laravel 的用户认证是由「看守器」和「提供器」。看守器定义如何对每个请求的用户进行身份验证。...return redirect()->intended('dashboard'); } Auth::attempt方法会做两件事: 查询用户:除了password以外的字段都会作为查询条件...首先,请在您的 AuthServiceProvider 的 boot 方法中调用 Auth::viaRequest 方法。 VIASRequest 方法接受身份验证驱动程序名称作为其第一个参数。...如果不使用传统的关系数据库来存储用户,则需要使用自己的身份验证用户提供程序来扩展 Laravel 。

    2.1K20

    在 WSL 2 中基于 Docker 编排 LNMP 运行环境

    由于 PHP 主要用于 Web 开发,所以,一个完备的本地开发环境必须配备 Web 项目运行环境,这通常需要一个 Web 服务器和数据库软件,这里我们选择比较通用的 Nginx 和 MySQL 作为 Web...服务器和数据库服务器,这样的一个 PHP 运行环境被称之为 LNMP(Linux + Nginx+ MySQL + PHP,如果 Web 服务器使用的是 Apache,则对应的运行环境简称为 LAMP...对于 Laravel 项目而言,已经有现成的编排方案可以直接拿来使用 —— ambientum/php,该方案对 Laravel 项目开箱即用,非常方便,你所要做的只是组织好 docker-compose.yml...启动完成后,通过 docker-compose ps 命令可以查看容器启动情况: ?...Mac 环境中完全一样,参考在 Mac/Windows 系统中使用 Laradock 搭建基于 Docker 的 Laravel 开发环境这篇文章即可,这里不再单独演示了,大家可以作为课后作业去自行体验下

    6.9K10

    用Docker搭建Laravel开发环境

    第一步:获取Laravel的源码包 因为我们电脑上不安装Composer,所以就不能使用Composer来创建Laravel项目了, 这里我使用cURL直接从github上下载了最新的Laravel源码包...App服务 APP服务的容器将执行我们项目中的代码。...fastcgi_pass app:9000; nginx将对PHP的请求通过fastcgi传递给了 app服务的9000端口, docker-compose会自动把services中定义的容器服务连接起来...docker-compose up -d 第一次启动时,由于docker客户端要下载上面提到的三个镜像并且构建服务所以启动速度会慢一些,等到下载完镜像并构建完成后,以后的启动都会非常快。...初始化Laravel项目 启动完服务后我们可以初始化Laravel项目了,步骤跟官方文档里介绍的一样,但是需要在启动的app服务的容器里执行: docker-compose exec app composer

    4.4K10

    使用 Docker 搭建本地开发环境!真心强啊

    本地开发之痛苦 在开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。...开发途中,可能你又需要依赖一些其他的服务,你最好祈祷不会出问题,可能你又要重写来配置你的环境,因为你的所有的依赖服务都在你的唯一的工作空间里面。...如果你的伙伴的操作系统不统一,可能你还会遇到一些不同元字符解析不一致的问题。 然后上线之前,可能你在本地开发调试都可以完美运行,一但部署到服务器,就会出现各种问题。...docker-compose up -d nginx workspace php-fpm mysql 这两条命令的效果是一样的,可以都带上,也可以不写。...up命令在第一次启动的时候实际上就是build + start的组合,如果容器不存在,那么就build一个容器,并且启动服务,如果容器存在那么直接启动服务,大概就是这么个意思 -d的意思是后台运行 配置

    1.3K10

    从零开始搭建本地 Docker 开发环境

    在开发之前,首先你需要安装各种开发工具和服务支持到你的开发环境当中,可能会出依赖问题,环境变量问题,端口冲突,经编译库问题等等。...开发途中,可能你又需要依赖一些其他的服务,你最好祈祷不会出问题,可能你又要重写来配置你的环境,因为你的所有的依赖服务都在你的唯一的工作空间里面。...如果你的伙伴的操作系统不统一,可能你还会遇到一些不同元字符解析不一致的问题。 然后上线之前,可能你在本地开发调试都可以完美运行,一但部署到服务器,就会出现各种问题。...mysql 那是因为php-fpm和workspace还有docker-in-docker是随nginx一并启动的 所以实际上 docker-compose up -d nginx mysql 和 docker-compose...up命令在第一次启动的时候实际上就是build + start的组合,如果容器不存在,那么就build一个容器,并且启动服务,如果容器存在那么直接启动服务,大概就是这么个意思 -d的意思是后台运行 配置

    4K20

    基于 Redis 实现 Laravel 广播功能(中):引入 Laravel Echo 接收广播消息

    接下来我们需要借助 Laravel Echo Server 搭建起 Websocket 服务器,这里面除了封装 Socket.io 服务端之外,还包含了订阅服务端广播频道的 Redis 客户端,用于接收服务端...如果是在本地搭建,按照 Laravel Echo Server 文档给出的安装和启动步骤操作即可,如果使用的是 Laradock,其内置了 laravel-echo-server 这个容器服务配置,使用...docker-compose up -d laravel-echo-server 启动即可,如果使用的是 Laravel Sail 作为本地开发环境,可以参考 Laradock 提供的 laravel-echo-server...Laravel Echo Server 容器服务了: sail up -d 初次构建会先拉取 laravel-echo-server 的容器镜像。...在浏览器页面开发者工具的 Console 中,也可以看到客户端接已经收到这个事件消息并打印出用户信息来了: 至此,从 Laravel 服务端到 Laravel Echo Server 到 Laravel

    3.8K10
    领券