Laravel Relationships имеет / dosent не работает, но с результатами шоу - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть кампания с 3 комментариями,

У меня рабочие отношения, потому что $campaign = Campaign::first(); $campaign->comments возвращает 3 комментария.

Проблема:

Campaign::has('comments')->get();

возвращаетничего, когда он должен вернуть кампанию;

Campaign::doesntHave('comments');

возвращает кампанию, когда он не должен возвращать ничего

И самое странное из всех:

Campaign::doesntHave('comments')->with('comments')->get();

возвращаеткампании, когда он ничего не должен возвращать и возвращает его с переменными комментариями со всеми тремя из них.

Кажется, что не может работать, и dosentHave работает.

Модель кампании:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class Campaign extends Eloquent {

    protected $connection = 'mongodb';
    protected $collection = 'campaign';

    public function comments(){
        return $this->hasMany('App\CampaignComments', 'campaignsid', 'sidcampaign');
    }
}

CampaignComments Модель:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Jenssegers\Mongodb\Eloquent\Model as Eloquent;

class CampaignComments extends Eloquent {

    protected $connection = 'mongodb';
    protected $collection = 'campaign_comments';

    public function campaign(){
        return $this->belongsTo('App\Campaign', 'sidcampaign', 'campaignsid');
    }
}

Примечания: я использую laravel 5.5, mongodb 3.6 и php 7.2

...