Я в основном работаю над двумя моделями прямо сейчас, Form
и Notification
, а отношение «многие ко многим» настраивается и работает для большинства команд «Красноречивый», за исключением whereHas
и has
. Оба просто возвращают пустой массив, []
.
Похоже, у разработчика возникли проблемы с тем, что он работал в прошлом , но, похоже, решил его здесь .
Вот пример того, что у меня есть до сих пор, и то, что я пробовал:
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; } }
Я получаю тот же результат, если я использую Notification::has('form')->get()
.
Поэтому мой вопрос:
Можно ли использовать whereHas
и has
в Jenssegers\Mongodb Eloquent
? Должен ли я использовать другой синтаксис, чем официальная документация Laravel для него, или я должен сделать для него необработанный запрос Mongo?