gpt4 book ai didi

php - Laravel - Mongodb [jenssegers/laravel-mongodb] - 架构生成器

转载 作者:可可西里 更新时间:2023-11-01 10:17:01 25 4
gpt4 key购买 nike

我有一个带有 mongodb 的网络应用程序,使用 jenssegers 包。

由于我使用的是 mongodb,是否需要创建任何迁移表?Jenssegers 数据库驱动程序也有(有限)schema builder support

Schema::create('users', function($collection)
{
$collection->index('name');

$collection->unique('email');
});

我找到了两个不同的“答案”。这家伙用的是the schema builder

enter image description here

Mulkave 的回答:

Q:“当我运行命令“php artisan migrate”时,在将迁移表创建到 mongodb 数据库中时出现以下错误:”

A:“您可能误解了 MongoDB 作为文档数据库的目的,您不需要在基于文档的数据库中进行迁移,而这正是它们的优点。它们具有动态模式,因此无论它们具有什么属性,您所要做的就是保存模型,这意味着您必须加强应用程序的业务逻辑以确保模型按预期保存”


那么,我需要迁移表吗?谢谢!

最佳答案

我知道这有点晚了,但我想我应该在这里添加一些代码。我喜欢索引模型有两个原因:

  1. 我可以像使用界面一样使用它,也就是说,我不得不输入这些信息,因为它是模型要求的一部分。这确保我有一个干净的数据集。这只是偏好,不是必需的。
  2. 索引搜索比没有索引时更快。我还没有对此进行足够的研究以弄清楚 jenssegers 库是否属于这种情况。但对我来说有意义的是,如果您使用模式来设置集合并将其设置为索引这些字段,那么在该集合中搜索记录时会更快。您也可以从 Mongo 端手动设置它,但我喜欢您可以使用这个 Eloquent 扩展来完成。

所以对于阅读这篇文章的人来说,如果我用这个未经证实的论点说服了你并且你想要建立一个模式,我发现建立这个集合很容易但不容易掉下来。如果您想进行完全迁移(请注意,执行此操作时您将丢失所有数据),那么您可以使用以下代码:

<?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']);
}
}

关于php - Laravel - Mongodb [jenssegers/laravel-mongodb] - 架构生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41930606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com