Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MongoDB&;jenssegers/laravel mongodb中的MySQL关系_Mongodb_Laravel_Jenssegers Mongodb - Fatal编程技术网

MongoDB&;jenssegers/laravel mongodb中的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

让我们从一些简单的代码开始。我有以下两种型号。 首先是使用MySQL:

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();
无论如何,这个解决方案不是一个很好的替代品,因为它打破了传统。第三,程序员可能不知道如何使用这种关系