在 Laravel 4 中通过迁移脚本创建 MySQL 视图

Posted

技术标签:

【中文标题】在 Laravel 4 中通过迁移脚本创建 MySQL 视图【英文标题】:Create MySQL view by migration script in Laravel 4 【发布时间】:2014-08-24 04:17:33 【问题描述】:

我正在尝试通过迁移脚本在 Laravel 中的 mysql 中创建视图。我们如何?

【问题讨论】:

【参考方案1】:

这个怎么样?没有测试过,但我认为它应该可以工作。

class CreateMyView extends Migration 

    public function up()
    
        DB::statement( 'CREATE VIEW myview AS SELECT [your select statement here]' );
    

    public function down()
    
        DB::statement( 'DROP VIEW myview' );
    


然后你可以创建一个模型来访问它:

class MyView extends Eloquent 

    protected $table = 'myview';


然后要从应用程序的其他位置访问视图,您可以像查询任何其他模型一样查询它,例如

MyView::all();  // returns all rows from your view
MyView::where( 'price', '>', '100.00' )->get();  // gets rows from your view matching criteria

道具转到以下提供了有关如何执行此操作的信息:

http://laravel.io/forum/05-29-2014-model-with-calculated-sql-field-doesnt-paginate http://forumsarchive.laravel.io/viewtopic.php?pid=51692#p51692

警告

如果以后的迁移修改了视图下的表,请小心。原因是per the documentation:

视图定义在创建时被“冻结”,因此之后对基础表的更改不会影响视图定义。例如,如果视图在表上定义为 SELECT *,则以后添加到表中的新列不会成为视图的一部分。

说真的,我想对于任何迁移都必须小心这样的事情,所以也许这没什么大不了的。

【讨论】:

以上是关于在 Laravel 4 中通过迁移脚本创建 MySQL 视图的主要内容,如果未能解决你的问题,请参考以下文章

在Laravel 5中通过ID和所有外国人递归获取记录

在laravel中通过vuejs创建数组?

检查文件夹是不是已经存在,如果没有在 laravel 中通过 id 创建一个新文件夹

Laravel 中通过自定义命令创建 service 服务层文件

如何在 laravel 6 中通过管理员登录添加或插入新用户

Laravel 5 - 跳过迁移