php - tutorial - Laravel+Jenssegers / Mongodb: ''WhereHas'' y ''Has'' devuelve colección vacía
mongodb mongodb (0)
Actualmente, estoy trabajando en dos modelos, Form
y Notification
, y una relación muchos a muchos está configurada y funciona para la mayoría de los comandos Eloquentes, a excepción de whereHas
y has
. Ambos solo devuelven una matriz vacía, []
.
Parece que el desarrollador ha tenido problemas para hacer que esto funcione en el pasado , pero parece que lo ha resuelto aquí .
Aquí hay una muestra de lo que tengo hasta ahora, y lo que he intentado:
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;
}
}
Obtengo el mismo resultado si uso Notification::has(''form'')->get()
.
Entonces mi pregunta es:
¿Es posible usar whereHas
y has
en Jenssegers/Mongodb Eloquent
? ¿Tengo que usar una sintaxis diferente a la documentación oficial de Laravel, o tengo que hacer una consulta de Mongo sin procesar para esto?