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

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

【问题讨论】:

    标签: php database laravel migration


    【解决方案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 *,则以后添加到表中的新列不会成为视图的一部分。

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

    【讨论】:

      猜你喜欢
      • 2013-08-25
      • 2017-05-25
      • 2016-05-10
      • 2018-06-19
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多