dua*_*ty_ 70 laravel laravel-4
我想在Laravel 4中重命名一个表,但不知道该怎么做.
SQL是alter table photos rename to images.如果有一个Eloquent解决方案,我也想知道如何运行原始SQL,因为有时候别无选择.
Lau*_*nce 140
在Laravel 4手册中 - 它讨论了如下的原始命令:
DB::select(DB::raw('RENAME TABLE photos TO images'));
Run Code Online (Sandbox Code Playgroud)
编辑:我刚刚在Laravel 4文档中发现了这可能更好:
DB::statement('drop table users');
Run Code Online (Sandbox Code Playgroud)
更新:在Laravel 4.1(也许是4.0 - 我不确定) - 您也可以为原始Where查询执行此操作:
$users = User::whereRaw('age > ? and votes = 100', array(25))->get();
Run Code Online (Sandbox Code Playgroud)
进一步更新如果您特别想要进行表重命名 - 有一个架构命令 - 请参阅Mike的答案.
Mik*_*ski 16
实际上,Laravel 4在Illuminate/Database/Schema/Builder.php中确实有一个表重命名功能,它现在只是没有记录:Schema::rename($from, $to);.
smi*_*trp 15
您也可以DB::unprepared用于ALTER TABLE查询.
DB::unprepared用于查询,如CREATE TRIGGER.但实际上它直接执行原始的SQL查询.(不使用PDO prepared语句)
https://github.com/laravel/framework/pull/54
小智 10
执行此操作的最佳方法我到目前为止已经发现它可以使用Pdo对象直接执行Laravel并执行查询.
例
DB::connection()->getPdo()->exec( $sql );
Run Code Online (Sandbox Code Playgroud)
我通常发现一次性查询更简单,更高效,只需打开我的数据库查询工具,并使用完整语法检查键入查询,然后直接执行.
如果您必须使用存储过程或需要使用任何数据库函数,这一点就变得很重要
示例2 将created_at设置为您需要的值,并保持任何碳排放
$sql = 'UPDATE my_table SET updated_at = FROM_UNIXTIME(nonce) WHERE id = ' . strval($this->id);
DB::statement($sql);
Run Code Online (Sandbox Code Playgroud)
我发现这在控制器中工作但在迁移中没有
在Laravel 4中重命名表的可接受方法是使用"架构"构建器.所以你想做:
Schema::rename('photos', 'images');
Run Code Online (Sandbox Code Playgroud)
来自http://laravel.com/docs/4.2/schema#creating-and-dropping-tables
如果您真的想自己写出原始SQL查询,可以随时执行:
DB::statement('alter table photos rename to images');
Run Code Online (Sandbox Code Playgroud)
注:Laravel的DB类还支持运行原始的SQL select,insert,update,和delete查询,如:
$users = DB::select('select id, name from users');
Run Code Online (Sandbox Code Playgroud)
有关详细信息,请参阅http://laravel.com/docs/4.2/database#running-queries.
| 归档时间: |
|
| 查看次数: |
140992 次 |
| 最近记录: |