Php laravel mongodb不保存
本文没有详细介绍如何将数据保存到mongodb 我已经安装了一个新的laravel安装,并按照文档中安装的mongodb本身设置了mongo连接 创建了一个模型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';
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库。愚蠢,没问题。不过,请确保您在问题中添加了答案。以防万一有人有同样的问题,并搜索了这个问题。