Laravel/framework 5.5.22 发布

本文翻译整理自 Laravel 5.5.22 Released

Laravel v5.5.222017年11月28日 发布,添加了一些有用的方法,从存储中返回一个文件作为响应,以及添加了一些不错的数据库。

Jonathan Reinink 增加了对文件系统的支持:response()download() 方法。

在某些情况下,您可能希望从存储中返回控制器中的文件或强制下载:

class DocumentController extends Controller
{
    public function show(Document $document)
    {
        // Return the document as a response
        return Storage::response($document->path);

        // Use a custom filename
        return Storage::response($document->path, 'sweet.pdf');

        // Force the file to download
        return Storage::download($document->path);
    }
}

Paulo Freitas 增加了更好的临时表支持,它增加了对 SQL Server 的临时表支持,使 $table->temporary() 可用于任何数据库驱动程序,并且还为临时表创建添加了测试范围。

Paulo 还为支持它们的数据库(MySQL,PostgreSQL 和 SQL Server)在 DateTime列上添加了更好的精度支持。由于与数据库默认精度和 Laravel 的默认有一些不一致的地方, 在 SQL Server 中还不完全正常,但是这对 SQL Server 的 DateTime 列精度处理来说是一个已经存在的问题。

一个值得注意的去除是基本 where 方法中的 between 运算符。

使用 between 目前不工作,并产生错误的SQL:

\App\User::where('created_at', 'between', ['2017-01-01', '2017-01-30'])->get();

它会生成:

select * from users where created_at between 2017-01-01

现在,你应该使用 whereBetween(就像使用whereIn一样)。

v5.5.22(2017-11-27)

添加

  • 向文件系统添加了 response()download() 方法 #22089
  • 增加了完整的临时表支持 #22110
  • 增加了 Mode::newQueryForRestoration() 方法 #22119
  • 增加了对日期/时间列的精确支持 #22122
  • 添加了对 MySQL Galera 死锁的检测 #22214

变更

  • 更新 MailFake::queue() 方法签名 #22072
  • 使用 MEDIUMTEXT 而不是 TEXT 作为数据库缓存值 (仅限MySQL) #22091
  • 默认情况下,在输出电子邮件中包含计划作业的名称 #22098
  • 支持 SQL ServerDblib 版本配置 #22102
  • 使用 SoftDeletes 强制删除模型时,将 Model::$exists 设置为 false #22100
  • 使 HasAttributes::fromDateTime() 支持空字符串 #22108
  • throw_* 助手返回条件 #22149
  • 使 Collection::where() 独立于错误报告 #22172
  • json 翻译文件包含错误时显示更多有意义的消息(#22165cf29b88
  • 提高 Model::getTable() 性能 #22222
  • Sql server 数据库中运行 migrations 文件时可以使用 transaction(事务) 功能 #22187

修复

  • whereHas 中使用时,修复 HasManyThrough 与自定义键的关系( #220713788cbd
  • 修复了 DATETIME 列的 SQL Server 处理 #22052
  • session 不可用时,从 old() 返回默认值 #22082
  • 重构 Arr::flatten() 以防止性能问题 #22103
  • 确保MYSQL JSON键在更新JSON列时使用双引号 #22118
  • 修复了 AWS 存储前缀 (root) 的自定义 URL #22130
  • 如果 password 是唯一指定的字段,则阻止验证 #22167

删除

  • 从基本的 where 子句中删除 between 比较符 #22182