Laravel - получить строки не в пользовательских отношениях hasMany

У меня есть таблица admin, а у admin много form. Каждому form назначается admin, который отображается на их приборной панели.

Беда в том, что может быть form, то есть не присвоено ни одному admin.

Я хочу получить все эти forms Любая помощь приветствуется. Благодарю вас!

Изменить: Admin связано с form через пользовательское отношение, как описано здесь

Обобщить,

Админ.php

public function states(){
    return $this->belongsToMany('App\State');
}

public function cities()
{
    return $this->belongsToMany('App\City');
}

//gets the forms in  this admin's city or state
//Let me know if there is a better way to do this, i feel like im overdoing stuff here 
public function forms()
{  
        //cities
        $cities = $this->cities->pluck('name'); 
        //states
        $states = $this->states->pluck('name');

        $users =  User::whereIn('state',$states)>orWhereIn('city',$cities)->get()->pluck('id');

        $forms = Form::whereIn('user_id',$users);

        return $forms;

}

Я хочу получить форму, которая не принадлежит никакому admin


person Rahul Ravindran    schedule 13.12.2016    source источник
comment
В основном вам нужно будет определить инверсию этого отношения в модели форм.   -  person John Sparwasser    schedule 13.12.2016
comment
Я добавил код, можете ли вы указать мне правильное направление?   -  person Rahul Ravindran    schedule 13.12.2016


Ответы (2)


Возможно, вы ищете не имеет.

$forms=Form::doesntHave('admin')->get();
person Sanzeeb Aryal    schedule 13.12.2016
comment
Спасибо, что изучили это. На самом деле отношения не являются стандартными имеет много отношений. Я отредактировал вопрос, чтобы лучше описать ситуацию. - person Rahul Ravindran; 13.12.2016

Почему бы вам просто не сделать наоборот?

$forms = Form::whereNotIn('user_id', $users);
person prateekkathal    schedule 13.12.2016