MongoDB&;jenssegers/laravel mongodb中的MySQL关系
让我们从一些简单的代码开始。我有以下两种型号。 首先是使用MySQL:MongoDB&;jenssegers/laravel mongodb中的MySQL关系,mongodb,laravel,jenssegers-mongodb,Mongodb,Laravel,Jenssegers Mongodb,让我们从一些简单的代码开始。我有以下两种型号。 首先是使用MySQL: class Phrase extends \Eloquent { public function positions() { return $this->hasMany('Position'); } public function getIdAttribute($id) { return (int) $id; } } 其次是使用Mo
class Phrase extends \Eloquent {
public function positions()
{
return $this->hasMany('Position');
}
public function getIdAttribute($id)
{
return (int) $id;
}
}
其次是使用MongoDB:
use Jenssegers\Mongodb\Model as Eloquent;
class Position extends Eloquent {
protected $collection = 'positions';
protected $connection = 'mongodb';
public function phrase()
{
return $this->belongsTo('Phrase');
}
}
在我的控制器中,我希望获得短语位置:
Phrase::find(1)->positions
哪个正在生成查询
positions.find({"positions.phrase_id":1}, [])
而不是
positions.find({"phrase_id":1}, [])
我怎么能修好它?问题出在HasMany方法()中。我通过在模型中创建自己的函数来获得功能
class Phrase extends \Eloquent {
public function positions()
{
return Position::where('phrase_id', '=', (int) $this->id)->get();
return $this->hasMany('Position');
}
}
$positions = Phrase::find(1)->positions();
无论如何,这个解决方案不是一个很好的替代品,因为它打破了传统。第三,程序员可能不知道如何使用这种关系