con*_*nfm 5 php mongodb laravel laravel-5
我有一个带有 mongodb 的网络应用程序,使用 jenssegers 包。
由于我使用的是 mongodb,我需要创建任何迁移表吗?Jenssegers 数据库驱动程序还具有(有限的)模式生成器支持
Schema::create('users', function($collection)
{
$collection->index('name');
$collection->unique('email');
});
Run Code Online (Sandbox Code Playgroud)
我找到了两个不同的“答案”。这家伙正在使用模式生成器
Mulkave 的回答是:
问:“当我运行命令“php artisan migrate”时,我收到以下错误,因为迁移表被创建到 mongodb 数据库中:”
答:“您可能误解了 MongoDB 作为文档数据库的目的,您不需要在基于文档的数据库中进行迁移,这就是它们的优点。它们具有动态模式,因此您所要做的就是保存您的模型,无论它们具有什么属性,这意味着您必须收紧应用程序的业务逻辑,以确保模型按照您的预期保存。”
那么,我需要迁移表吗?谢谢!
我知道这有点晚了,但我想我应该在这里添加一些代码。我喜欢有一个索引模型有两个原因:
因此,对于阅读本文的人来说,如果我用这个未经验证的论点说服了您,并且您想设置一个模式,我发现设置集合很容易,但删除它并不容易。如果您想进行完整迁移(请注意,执行此操作时您将丢失所有数据),那么您可以使用以下代码:
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateYourCollectionTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::connection('mongodb')->create('collection_name', function ($collection) {
$collection->index('field_1');
$collection->index('field_2');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
DB::connection('mongodb')->drop(['collection_name']);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7170 次 |
| 最近记录: |