如何在插入mongodb之前在模型中设置数据类型? (Laravel-mongodb的)

时间:2017-04-06 17:46:42

标签: php mongodb laravel laravel-5.3 laravel-eloquent

我从这里得到参考:https://github.com/jenssegers/laravel-mongodb

我在mongodb中创建数据库和集合。我不会在mongodb中制作文档和专栏。因为它会在插入数据时自动生成列和数据类型

我的控制器,你可以在下面看到:

public function create(array $attributes)
{
    ...
    $result = User::create($attributes);
    ...
}

我的模型,您可以在下面看到:

<?php
...
use Jenssegers\Mongodb\Eloquent\Model as Eloquent; 
use Jenssegers\Mongodb\Eloquent\HybridRelations;

class User extends Eloquent
{
    use HybridRelations;  
    use SoftDeletes;

    protected $connection = 'mongodb';
    public $table = 'users';
    protected $dates = ['deleted_at'];

    public $fillable = [
        ...
        'name',
        ...
    ];

    protected $casts = [
        ...
        'name' => 'string',
        ...
    ];
}

当我将数据插入mongodb时,mongodb上的数据类型将根据输入自动创建

如何在模型中设置数据类型?

当我输入数据类型时:string

我可以将其设置为数据类型:我的模型中的integer

因此,在mongodb中形成的数据类型为integer

1 个答案:

答案 0 :(得分:0)

MongoDB支持两个可以直接嵌入MongoDB文档中的构造函数,从而允许您指定整数数据类型。在MongoDB文档中,使用以下内容:

myField: NumberLong("20372")

指定您要“ myField”包含64位带符号整数。如果只需要32位带符号整数,则可以使用:

myField: NumberInt("20372");

您需要解决的是在将文档文本传递给MongoDB驱动程序之前,如何在PHP脚本中生成该文档文本。还要注意,NumberLong()和NumberInt()构造函数采用 string 值,因此,如果您的PHP脚本接收数字数据作为字符串,则不必先在PHP中将这些字符串转换为数字类型。 :当您将包含NumberLong()和NumberInt()构造函数的MongoDB文档传递给必需的驱动程序函数/方法时,MongoDB将为您做到这一点。

当然,要了解其工作原理,最好在开始对主项目进行全面编辑之前进行一个简单的测试,以便在继续进行上述编辑时,您事先知道要进行哪些更改。