sql >> Databáze >  >> NoSQL >> MongoDB

má mnoho problémů se vztahy v Laravel 5.3 + knihovna MongoDB 'jenssegers/laravel-mongodb'

v Mongo Eloquent při vytváření vztahů Many to Many nepotřebujete mít kontingenční tabulku, to je způsob myšlení SQL, ve relacích Mongo Eloquent many to many jsou cizí klíče uloženy v polích.Takže modely by měly vypadat takto:

<?php namespace App\Models;

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class Employee extends Eloquent {

    protected $collection = 'employee';
    protected $primaryKey = '_id';

    public function tasks()
    {
        return $this->belongsToMany('App\Models\Task');
    }
}





<?php namespace App\Models;

use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class Task extends Eloquent {

    protected $collection = 'task';
    protected $primaryKey = '_id';

    public function employees()
    {
        return $this->belongsToMany('App\Models\Employee');
    }
}  

Také byste měli načíst vztahy před pokusem o jejich načtení

 $employee= Employee::with('tasks')->find('586ca8c71a72cb07a681566d')->tasks;

Relaci můžete uložit stejným způsobem jako v relaci hasMany

$employee->tasks()->save(new Task());


  1. pole mongoose _id nelze smazat

  2. Načíst jednu vlastnost z dokumentu

  3. Mongo Dotaz na vnořené pole v poli.

  4. Paralelní dotazování na stejný dokument ve stejném rozhraní API v mongoDB