Php laravel mongodb不保存

Php laravel mongodb不保存,php,mongodb,laravel,Php,Mongodb,Laravel,本文没有详细介绍如何将数据保存到mongodb 我已经安装了一个新的laravel安装,并按照文档中安装的mongodb本身设置了mongo连接 创建了一个模型 use Jenssegers\Mongodb\Model as Eloquent; class Notifications extends Eloquent { protected $connection = 'mongodb'; protected $collection = 'notifications';

本文没有详细介绍如何将数据保存到mongodb

我已经安装了一个新的laravel安装,并按照文档中安装的mongodb本身设置了mongo连接

创建了一个模型

use Jenssegers\Mongodb\Model as Eloquent;

class Notifications extends Eloquent {

    protected $connection = 'mongodb';
    protected $collection = 'notifications';

    public static function foo()
    {
        return 'test returning from model';
    }

}
并创建一个简单的测试路径

Route::get('notifiction' , function(){

    $notifiction = new Notifications();

    $arr = array('name' => 'John Doe');

    $notifiction->save($arr);
});

但是当我运行localhost/mongo/public/notification时,我得到了哎呀,好像出了什么问题。我不确定还需要做什么才能通过laravel将信息保存到mongodb?

此错误很可能与批量分配有关。也就是说,laravel在将每件事情保存到数据库之前都会将其视为不安全的。因此,我们必须将试图保存的字段列为白名单

我们这样做的方式是在模型中。假设您正试图使用
用户模型
将数据保存在
用户
表中。首先打开app/models/user.php并添加以下行:

class User extends Eloquent {
protected $fillable = ['name'];
}

在上面的fillable中,我们列出了
name
,因为我们希望从控制器保存name(如果您在数组中有任何其他数据填充)。现在我们可以从控制器保存数据

例如:
User::create(数组('name'=>'John')
将在
用户集合
中保存名称。请注意,除非另有规定,否则集合的名称将是模型的名称


[如果这不能解决您的问题,请转到
app/config/app.php
并设置
debug=true
,启用调试。查找错误并尝试搜索。]

此错误很可能与批量分配有关。也就是说,laravel在将每件事情保存到数据库之前都会将其视为不安全的。因此,我们必须将试图保存的字段列为白名单

我们这样做的方式是在模型中。假设您正试图使用
用户模型
将数据保存在
用户
表中。首先打开app/models/user.php并添加以下行:

class User extends Eloquent {
protected $fillable = ['name'];
}

在上面的fillable中,我们列出了
name
,因为我们希望从控制器保存name(如果您在数组中有任何其他数据填充)。现在我们可以从控制器保存数据

例如:
User::create(数组('name'=>'John')
将在
用户集合
中保存名称。请注意,除非另有规定,否则集合的名称将是模型的名称


[如果这不能解决您的问题,请转到
app/config/app.php
并设置
debug=true
,启用调试。查找错误并尝试搜索。]

您不需要像SQL模型那样执行操作

你试试这样的模型

class User extends Moloquent {
    protected $connection = 'mongodb';
    protected $collection = 'collection1';
    protected $fillable = ['_id','userName','passwd'];
}
您可以尝试插入此选项

DB::connection('mongodb')->collection('collection1')
    ->insert(array(
             '_id' => 'H12345',
             'userName' => 'Nithil',
             'passwd' => 'qwoeuig'));
在使用多个数据库时,使用
Moloquent
更方便。对于使用
Moloquent
,您可以通过在
app/config/app.php
中的别名数组中添加以下内容来注册MongoDB模型的别名:

'Moloquent' => 'Jenssegers\Mongodb\Model',
这将允许您使用注册的别名,如:

class MyModel extends Moloquent {}

您不需要像SQL的模型那样做

你试试这样的模型

class User extends Moloquent {
    protected $connection = 'mongodb';
    protected $collection = 'collection1';
    protected $fillable = ['_id','userName','passwd'];
}
您可以尝试插入此选项

DB::connection('mongodb')->collection('collection1')
    ->insert(array(
             '_id' => 'H12345',
             'userName' => 'Nithil',
             'passwd' => 'qwoeuig'));
在使用多个数据库时,使用
Moloquent
更方便。对于使用
Moloquent
,您可以通过在
app/config/app.php
中的别名数组中添加以下内容来注册MongoDB模型的别名:

'Moloquent' => 'Jenssegers\Mongodb\Model',
这将允许您使用注册的别名,如:

class MyModel extends Moloquent {}

正如OP所提到的,错误是由于

未安装MongoDB PHP库

除此之外,要在Laravel中进行批量分配,字段应为
“白名单”
“黑名单”

要将字段列入白名单,请添加

//可以批量分配姓名、年龄、用户名和电子邮件

受保护的$filleble=['name','age','username','email'];

要将字段列入黑名单,请添加

//除了_id之外,所有东西都可以批量分配

受保护的$guarded=[''u id']


到您的模型文件

,因为OP已经提到错误是由于

未安装MongoDB PHP库

除此之外,要在Laravel中进行批量分配,字段应为
“白名单”
“黑名单”

要将字段列入白名单,请添加

//可以批量分配姓名、年龄、用户名和电子邮件

受保护的$filleble=['name','age','username','email'];

要将字段列入黑名单,请添加

//除了_id之外,所有东西都可以批量分配

受保护的$guarded=[''u id']


到您的模型文件

您能检查您的app/storage/logs/laravel.log中是否有任何错误吗?另外,在您的开发环境中,您可能希望在app/config/app.php中更改为debug=true,因此您看到的不仅仅是“哎呀,好像出了什么问题。”我的坏消息似乎是,即使我安装了mongo,我也没有安装mongodb php库。愚蠢,没问题。不过,请确保您在问题中添加了答案。以防万一有人有同样的问题并搜索了这个问题。你能检查一下你的app/storage/logs/laravel.log中是否有任何错误吗?另外,在您的开发环境中,您可能希望在app/config/app.php中更改为debug=true,因此您看到的不仅仅是“哎呀,好像出了什么问题。”我的坏消息似乎是,即使我安装了mongo,我也没有安装mongodb php库。愚蠢,没问题。不过,请确保您在问题中添加了答案。以防万一有人有同样的问题,并搜索了这个问题。