بایگانی برچسب: s

نصب MongoDB و استفاده در لاراول

نوشته‌شده در توسط .

اگه قصد دارید به MongoDB روی بیارید کاره بدی نمیکنید ولی یکم دنگ و فنگ داره این قضیه. توی این پست میخوام تجربه خودم رو از مهاجرت از مای اس کیو ال به مانگو دی بی رو بگم. البته خیلی تجربه عمیقی نیست و فعلا در حد معرفی و نحوه نصب و رفع مشکلات اولیه میگم. بعد ها به جاهای خفنش رسیدم بازم در مورد اونا هم میگم.

توجه: همه کارایی که من میگم روی Ubuntu 18.04.3 تست شده و بقیه جاها رو نمیدونم.

بعد از اینکه لاراول رو نصب کردید خیلی راحت با دستور زیر مانگو رو هم نصب کنید (البته برای این بخش بهتره از طریق داکیومنت مانگو دی بی پیش برید).

sudo apt-get install -y mongodb-org 

معروف ترین پکیجی که لاراولی ها برای کار با مانگو باهاش کار میکنن jenssegers/laravel-mongodb هست که میتونید نصبش کنید ولی قبلش باید یکار دیگه هم بکنید و اون هم اینه که درایور PHP برای مانگو رو نصب کنید. من چند تا راه رو رفتم و این پست از داکیومنت PHP واسم جواب داد. در واقع اگه PECL داشته باشید خیلی راحت با این کامند کارتون راه میفته:

sudo pecl install mongodb

حالا پکیج jenssegers رو نصب کنید و کارایی که گفته رو انجام بدید. حالا قانونا باید همه چی اوکی باشه ولی بازم واسه من اوکی نبود. اولین کاری که میکنید یبار سرویس مانگو رو استارت کنید.

sudo service mongod start

اگه دستور بالا بدون هیچ پیامی اجرا شد ینی کارتون درسته. بعد باید وارد اینترفیس مانگو بشید و یه یوزر بسازید. برای این کار mongo رو تایپ کنید و اینتر کنید. یه دیتابیس به صورت زیر بسازید.

use test

دستور بالا اگه دیتابیس رو داشته باشید سلکتش میکنه اگه نداشته باشید میسازه. چقد کامند خوبیه 🙂 برای اینکه دیتابیس ها رو ببینید هم میتونید از دستور زیر استفاده کنید.

show dbs

حالا با دستور زیر میتونید یوزر های این دیتابیس رو ببینید:

db.getUsers()

توجه کنید که db نباید اسم دیتابیستون باشه و همین db باید باشه. اگه یوزری ندارید باید بسازیدش. برای این کار این شکلی میتونید عمل کنید:

db.createUser({user:'admin', pwd:'Aa123', roles: [{role:"readWrite", db:"test"}]})

و حالا برید کانکشن دیتابیس رو توی فایل database.php بسازید. و بعدش دیفالت کانکشن رو هم تغییر بدید.

    'mongodb' => [
        'driver'   => 'mongodb',
        'host'     => env('DB_HOST', 'localhost'),
        'port'     => env('DB_PORT', 27017),
        'database' => 'test',
        'options'  => [
            'database' => 'admin' 
        ]
    ],
'default' => env('DB_CONNECTION', 'mongodb'),

من یوزر و پسورد رو هم اینجا گذاشتم و اررور داد. شما اون یکی دو تا رو توی فایل .env بذارید.

DB_CONNECTION=mongodb
DB_HOST=localhost
DB_PORT=27017
DB_DATABASE=test
DB_USERNAME=admin
DB_PASSWORD=Aa123

و حالا php artisan migrate کنید. ایشالا که همه چی اوکی باشه.

اگه از قبل دیتابیس مانگو دی بی دارید و میخواید ایمپورتش کنید یه راه ساده استفاده از روش زیر هست که کل کالکشن هاتون رو ایمپورت میکنه:

mongorestore --db test ./orgdictionary

استفاده از Eloquent در لاراول با MongoDB

اگه میخواید از Eloquent توی لاراول استفاده کنید باید مدل هاتون رو از Eloquent پکیج اسکتند کنید. بعنوان مثال برای مدل Post بصورت زیر عمل کنید:

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;
class Post extends Eloquent
{

}

حالا میتونید توی کنترلرتون از App\Post::all() و… استفاده کنید. البته برای جدول یوزر باید یه حرکت بیشتر هم بکنید و اون اینه:

use Illuminate\Contracts\Auth\Authenticatable;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

use Illuminate\Auth\Authenticatable as AuthenticableTrait;
class User extends Eloquent implements Authenticatable
{
use Notifiable;
use AuthenticableTrait;
{

این باعث میشه که توی مرحله Auth هم به اررور نخورید و مثل حالت معمولی با Auth::attempt لاگین کنید.