اگه قصد دارید به 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
لاگین کنید.
ایولل