MongoDB PHP driver

新しい ObjectId を作る

@mongo shell

  ObjectId();

@php

  new MongoDB/BSON/ObjectId;

PHP側でnamespaceを使っていたら…

use MongoDB\BSON\ObjectID;

 

new ObjectID;

 

参考:

BSON — PHP Library Manual 1.4

PHP: MongoDB\BSON\ObjectId - Manual

Laravel 5.x Factory と Faker で relational なモックアップを作る。

updated: 2021/6/1

 

jenssegers/mongodb の mysql relationships で使用可能なことが確認済み

 

php artisan make:factory FACTORY_NAME

factory1

f:id:monteecristoo:20201022131507p:plain



 factory2

f:id:monteecristoo:20181001204844p:plain

seeds/DatabaseSeeder.php

f:id:monteecristoo:20201022131857p:plain


おまけ

ランダムな文字列を生成

return [

  'randomText' => $faker->regexify('[A-Za-z0-9]{' . mt_rand(4, 20) . '}'

]

 



php artisan db:seed

これでfaker モックアップ + user と 某model のrelationship に整合性が取れたDBができる。

参考:

monteecristoo.hatenablog.com

PHPフレームワーク Laravel実践開発

PHPフレームワーク Laravel実践開発

 
 

 

stackoverflow.com

jenssegers/laravel-mongodb Basic Usage on cloud9 with php7 ⑨ Mysql relationships で mongoDB と mysql 上のデータを合わせて返す。

updated: 2018/10/1

Mysql relationships については下記参照

monteecristoo.hatenablog.com

mongoDBとMysqlをjoin して返したい場合、mongoDBはjoinに対応していないので、

f:id:monteecristoo:20180930202813p:plain

PixieImage は mongoDB上のデータベース

user はmysql のデータベース

 さらにこれを pagination のように動作させたいなら collection は paginate が使えないので forPage() メソッドを使う。

参考:

laravel.com

php artisan db:seed でエラー

f:id:monteecristoo:20180927221040p:plain

データベーステーブルを適切に削除しなかったため。

solution:

php artisan migrate:refresh

 

jenssegers/laravel-mongodb Installation on php7.2 cloud9

Updated: 2018/9/27

  • php7.2 を cloud9 にインストール

monteecristoo.hatenablog.com

  • MongoDB のインストール

monteecristoo.hatenablog.com

  • PHP 用の MongoDB ドライバーをインストール

PHP: Installing the MongoDB PHP Driver with PECL - Manual

sudo pecl install mongodb でエラーが出るので

sudo apt-get install php-pear

sudo pecl install mongodb

monteecristoo.hatenablog.com

  • jenssegers/laravel-mongodb をインストール

composer require jenssegers/mongodb

  successfully installed!!

f:id:monteecristoo:20180925193328p:plain

  • Configurations

@config/app.php

'mongodb' => [
    'driver'   => 'mongodb',
    'host'     => env('DB_HOST', 'localhost'),
    'port'     => env('DB_PORT', 27017),
    'database' => env('DB_DATABASE'),
    'username' => env('DB_USERNAME'),
    'password' => env('DB_PASSWORD'),
    'options'  => [
        'database' => 'admin' // sets the authentication database required by mongo 3
    ]
],

MongoDBのauth設定をしていない(./mongod でWARNING で表示される)なら'user_name' 'password' をコメントアウト

'port' => env('DB_PORT', 27017), としておくとなぜか

f:id:monteecristoo:20180927135347p:plain

違うport につながってエラーになるので

'port' => env(27017)

にするとOK

 

 

php の mongodb ドライバーをインストールしようとしたらエラーが発生した cloud9

環境:

php7.2

cloud9(ubuntu14.0.4)

cloud9 で php5 から php7 にアップデート済み

MongoDB ver 4.0.2

 

sudo pecl mongodb

  =>

Parse error: syntax error, unexpected 'new' (T_NEW) in /usr/share/php/PEAR/Frontend.php on line 91

f:id:monteecristoo:20180925190836p:plain

solution:

  sudo apt-get install php-pear

  sudo pecl install mongodb

f:id:monteecristoo:20180925191053p:plain

 参考:

stackoverflow.com

github.com