Je suis essayer de créer une relation entre les albums et les photos (un album a beaucoup de photos). Voici mon contrôleur et à quoi ressemblent mes modèles. Intéressant, la relation inverse photo-> album (belongsTo) fonctionne bien! mais l'album-> photos renvoie une collection vide.Laravel MongoDB hasMany relation ne fonctionne pas
## The hasMany relationship does NOT work... I get an empty collection
<?php
class AlbumController extends BaseController
{
public function show(Request $request, $album_id)
{
$album = Album::find($album_id);
dd($album->photos);
}
}
## Results:
# Collection {#418
# items: []
# }
## The belgonsTo relationship works
<?php
class PhotoController extends BaseController
{
public function show(Request $request, $photo_id)
{
$photo = Photo::find($photo_id);
dd($photo->album);
}
}
<?php
namespace App;
use DB;
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
use Moloquent;
class Album extends Moloquent
{
use RecordActivity, SoftDeletes;
protected $connection = 'mongodb';
protected $table = 'albums';
protected $collection = 'albums';
protected $primaryKey = "_id";
protected $dates = ['deleted_at'];
protected $fillable = ['user_id','name','is_private'];
public function photos()
{
// Neither seems to work
//return $this->embedsMany('Photo');
return $this->hasMany('App\Photo');
}
}
<?php
namespace App;
use DB;
use Jenssegers\Mongodb\Eloquent\SoftDeletes;
use Moloquent;
class Photo extends Moloquent
{
use RecordActivity, SoftDeletes;
protected $connection = 'mongodb';
protected $table = 'photos';
protected $collection = 'photos';
protected $primaryKey = "_id";
protected $dates = ['deleted_at'];
protected $fillable = ['album_id', 'user_id', 'name', 'folder', 'is_private', 'caption'];
protected $hidden = [];
// user and album belongsTo works
public function user()
{
return $this->belongsTo('App\User');
}
public function album()
{
return $this->belongsTo('App\Album');
}
}
Je sais que ce n'est pas une réponse directe à votre question mais ne pensez-vous pas que votre relation devrait être Beaucoup trop? Un album peut avoir beaucoup de photos mais un autre album peut aussi avoir les mêmes photos? –
Quelle version de jenssegers/mongodb utilisez-vous? Aussi quelle version de mongodb? – PiKos
Vous pouvez également essayer d'imprimer des requêtes. Exemple: ** DB :: connection() -> enableQueryLog(); $ photos = $ album-> photos; dd (DB :: getQueryLog()); ** – PiKos