Commençons par un code simple. J'ai deux modèles suivants. Tout d'abord utilise MySQL:Relations MongoDB & MySQL dans jenssegers/laravel-mongodb
class Phrase extends \Eloquent {
public function positions()
{
return $this->hasMany('Position');
}
public function getIdAttribute($id)
{
return (int) $id;
}
}
et la seconde utilise MongoDB:
use Jenssegers\Mongodb\Model as Eloquent;
class Position extends Eloquent {
protected $collection = 'positions';
protected $connection = 'mongodb';
public function phrase()
{
return $this->belongsTo('Phrase');
}
}
Dans mon contrôleur, je veux obtenir des positions de phrase:
Phrase::find(1)->positions
qui génère requête
positions.find({"positions.phrase_id":1}, [])
au lieu de
positions.find({"phrase_id":1}, [])
Comment puis-je résoudre ce problème? Le problème est dans la méthode HasMany (http://laravel.com/api/source-class-Illuminate.Database.Eloquent.Model.html#_hasMany).