10

Laravel/Jenssegers MongoDB を使用して、アプリの簡単なお気に入りを設定しようとしています

私は2つのモデルを持っています:

class Item {

    public function favorites()
    {
       return $this->hasMany('App\Models\User', 'favorites');
    }
}

class User {

    public function favorites()
    {
       return $this->hasMany('App\Models\Item', 'favorites');
    }
}

したがって、アイテムには多くのユーザーがいて、ユーザーは多くのアイテムまたは「お気に入り」を持つことができます。

次のような単純なクエリを実行しようとすると:

Item::with('favorites')->get();

お気に入りの関係はありますが、空の配列です。

favoritesテーブルは単純で、3 つの列しかありません。

_id, item_id, user_id

私もembedsMany運が悪かったので使ってみました:

return $this->embedsMany('App\Models\User', 'favorites');

また、パラメーターのすべての組み合わせを試しました。

return $this->embedsMany('App\Models\User', 'favorites', 'building_id', 'user_id');
return $this->embedsMany('App\Models\User', 'favorites', 'user_id', 'building_id');
return $this->hasMany('App\Models\User', 'favorites', 'building_id', 'user_id');
return $this->hasMany('App\Models\User', 'favorites', 'user_id', 'building_id');

使用時の奇妙な結果:

return $this->hasMany('App\Models\User', 'favorites', 'building_id', 'user_id');

この状況でのみ、お気に入りのレコードが 1 つしかない場合でも、すべてのユーザーが返されます。

また、使用してデバッグしようとするとgetQueryLog、常に空の配列が返されます。

print_r(\DB::connection('mongodb')->getQueryLog());

私はこれを使用mysqlしてこれを行いましたが、問題が発生したことはありません。そのため、問題がどこから来ているのかよくわかりません。

4

1 に答える 1