作者归档:jerry

Laravel 验证规则中的 exists 和 unique 应该怎么使用

exists:table,column

验证字段的值是否存在于数据库指定表的指定列中,如果不存在将会抛出异常,这里是关于 exists 规则的 详细说明

基本用法

验证 users 表中是否存在 email 等于指定的 email 值的记录

  • 'email' => 'exists:users'
  • Rule::exists('users')

自定义列名

验证 users 表的 email_address

  • 'email' => 'exists:users,email_address'
  • Rule::exists('users','email_address')

自定义数据库连接

验证指定数据库连接的 users 表

  • 'email' => 'exists:connection.users,email'

附加 WHERE 条件(可以有多个)

除了验证 email_address 还需要验证 role 等于 admin

  • 'email' => 'exists:users,email_address,role,admin'
  • Rule::exists('users','email_address')->where('role','admin')

! 表示不等于

  • 'email' => 'exists:users,email_address,role,!admin'
  • Rule::exists('users','email_address')->whereNot('role','admin')

NULL 在 MySQL 中是通过 IS 判断的,这里注意不用 IS

  • 'email' => 'exists:users,email,deleted_at,NULL'
  • Rule::exists('users','email_address')->whereNull('deleted_at')

对不等于 NULL 的情况不能使用 !,而是使用 NOT_NULL

  • 'email' => 'exists:users,email,deleted_at,NOT_NULL'
  • Rule::exists('users','email_address')->whereNotNull('deleted_at')

unique:table,column,except,idColumn

验证字段的值在数据库指定表的指定列中是否唯一,如果不唯一将会抛出异常,这里是关于 unique 规则的 详细说明

基本用法

验证指定的 email 值在 users 表的 email 中是否唯一

  • 'email' => 'unique:users '
  • Rule::unique('users')

自定义列名

验证 users 表的 email_address

  • 'email' => 'unique:users,email_address'
  • Rule::unique('users','email_address')

自定义数据库连接

验证指定数据库连接的 users 表

  • 'email' => 'unique:connection.users,email_address'

排除某条记录

排除 users 表中 id 等于 $userId 的记录,使用场景是用户修改 email 时,需要验证自身除外的其他用户是否已使用了该 email

  • 'email' => 'unique:users,email_address,'.$userId
  • Rule::unique('users','email_address')->ignore($userId)

排除时指定 primary_key

排除 users 表中 user_id 等于 $userId 的记录

  • 'email' => 'unique:users,email_address,'.$userId.',user_id'
  • Rule::unique('users','email_address')->ignore($userId,'user_id')

附加 WHERE 条件(和 exists 的 WHERE 条件相同)

由于排除是在 WHERE 条件之前的,如果指定了 WHERE 条件,但是没有指定排除,需要把第三个参数设为 NULL

  • 'email' => 'unique:users,email_address,NULL,id,role,admin'
  • Rule::unique('users','email_address')->where($role,'admin')

在Ubuntu 18.04上安装MySQL

使用 apt 或 tasksel 安装完 mysql-server 之后,默认无法登录,需要进行配置。

  1. 使用命令 mysql_secure_installation 并按提示操作,之后重启服务。
  2. 使用 sudo mysql -u root -p 登录,密码为空,或上一步设置的密码。
  3. 运行以下SQL: update mysql.user set plugin='mysql_native_password', authentication_string=password('root') where User='root'; ,退出,重启服务。

新密码是 root

Laravel 5.4: Specified key was too long error

Laravel 5.4 made a change to the default database character set, and it’s now utf8mb4 which includes support for storing emojis. This only affects new applications and as long as you are running MySQL v5.7.7 and higher you do not need to do anything.

For those running MariaDB or older versions of MySQL you may hit this error when trying to run migrations:

[Illuminate\Database\QueryException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes (SQL: alter table users add unique users_email_unique(email))

[PDOException]
SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 767 bytes

As outlined in the Migrations guide to fix this all you have to do is edit your AppServiceProvider.php file and inside the boot method set a default string length:

After that everything should work as normal. If you enjoyed this post be sure and join the weekly Laravel newsletter and never miss out on new releases, framework tips, and new tutorials.

延长phpmyadmin登录时间的方法

编辑 config.inc.php 文件,使用 http 登录模式,只要浏览器不关闭就可以继续使用。

让 vmware 共享文件夹自动加载的办法

因为新电脑不能直接安装 linux ,只能使用 vmware 内安装虚拟机。安装 vmware 扩展工具,才能使用图形加速,共享目录等功能。

设置了 共享文件夹 后,每次开机后都要连接共享,如果要实现自动加载,在 /etc/fstab 中添加以下代码:

share_name 是主机共享出来的目录名,/mnt/hgfs/access 是虚拟机内的访问路径。

yarn 在 linux 中出现 pngquant 创建失败的问题怎么解决

在 linux 中使用 yarn 安装组件时,出现以下错误:

安装 libpng-dev 组件就可以了:

在 Ubuntu 上配置和优化 Apache

你可以在 Apache 上做各种各样的配置,但是主要的和最常见的配置将在下面做出解释。

检查 Apache 是否正在运行

默认情况下,Apache 设置为在机器启动时自动启动,因此你不必手动启用它。你可以使用以下命令检查它是否正在运行以及其他相关信息:

check if apache is running
check if apache is running

并且你可以检查你正在使用的版本:

一种更简单的检查方法时访问服务器的 IP 地址,如果你得到默认的 Apache 页面,那么一切都正常。

继续阅读

Laravel 中 validation 验证应该怎么设置中文信息提示

首先复制 resources\lang\en 目录下边的 validation.php到新建的文件夹zh-cn中,用下面代码替换之前的代码,在 attributes 中设置字段,最后设置config下的app.php中修改 'locale' => 'zh-cn'

js中判断对象是否为空的方法

判断一个对象是否为空对象,本文给出三种判断方法:

  1. 最常见的思路,for…in…遍历属性,为真则为“非空数组”;否则为“空数组”

  1. 通过JSON自带的stringify()方法来判断:

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

这里需要注意为什么不用toString(),因为它返回的不是我们需要的。

  1. ES6新增的方法Object.keys():

Object.keys()方法会返回一个由一个给定对象的自身可枚举属性组成的数组。

如果我们的对象为空,他会返回一个空数组,如下:

我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。