php - update - requires ext mongodb 1.1 0



Laravel+Jenssegers \ Mongodb: 'WhereHas' et 'Has' retourne la collection vide (0)

Je travaille principalement sur deux modèles en ce moment, Form et Notification , et une relation many-to-many est mise en place et fonctionne pour la plupart des commandes Eloquent, excepté whereHas et has . Les deux retournent juste un tableau vide, [] .

Il semble que le développeur ait eu du mal à faire fonctionner cela dans le passé , mais il semble l'avoir résolu ici .

Voici un échantillon de ce que j'ai jusqu'ici, et ce que j'ai essayé:

Form.php

class Form extends Eloquent {
    protected $connection = 'mongodb';

    public function notifications(){
        return $this->belongsToMany('App\Api\Forms\Notification', null, 'form_ids', 'notification_ids');
    }

}

Notification.php

class Notification extends Eloquent {
    protected $connection = 'mongodb';

    public function forms()
    {
        return $this->belongsToMany('App\Api\Forms\Form', null, 'notification_ids', 'form_ids');
    }    
}

NotificationController.php

<?php

namespace App\Http\Controllers;
use App\Api\Forms\Notification;
use App\Api\Forms\Form;

class NotificationController extends Controller
{

    public function getByFormTitle($form_title)
    {
        // This code retuns the relationship as expected.
        // Any forms that are assigned to it are returned.
        // $n = Notification::first();
        // $n->forms()->get();

        // This also returns the relationship correctly, same as before.
        // $f = Form::first();
        // $f->notifications()->get();


        // Nearly identical to the Laravel docs. This returns an empty array, []
        $notifications = Notification::whereHas('forms', function ($query) use ($form_title) {
            $query->where('form_title', $form_title);
        })->get();

        return $notifications;
    }

}

J'obtiens le même résultat si j'utilise Notification::has('form')->get() .

Donc ma question est:

Est-il possible d'utiliser whereHas et has Jenssegers\Mongodb Eloquent ? Dois-je utiliser une syntaxe différente de la documentation officielle de Laravel, ou dois-je faire une requête Mongo brute pour cela?





jenssegers-mongodb