2016-10-01 2 views
0

A User имеет множество Auktion и Gebot.
Gebot принадлежит один Auktion и один UserEloquent список доступа к моделям моделей

Я хочу получать все Auktion где User также имеет Gebot

Что-то вроде:

Auth::user()->gebote->auktionen->orderBy('end_time'); 

OrderBy() должны быть выполнены на Auktionen был получен через Gebot, что невозможно, так как отношения между Auktion и Gebot являются одними для многих:

**Gebot Model** 
    public function auktion() 
    { 
    return $this->belongsTo('App\Auktion'); 
    } 


    public function user() 
    { 
    return $this->belongsTo('App\User'); 
    } 

    **Auktion Model** 
    public function gebote() 
    { 
    return $this->hasMany('App\Gebot', 'auktion_id'); 
    } 

    public function user() 
    { 
    return $this->belongsTo('App\User'); 
    } 

Какова правильная настройка и запрос отношений для достижения этого?

EDIT:

Мой текущий подход заключается в следующем

   @foreach (Auth::user()->gebote as $gebot) 
       <?php $auktion = $gebot->auktion; 
       if($auktion->anzeigentyp_id == 2) 
        continue; ?> 
       @include('shop/row') 
       @endforeach 

, не очень чистый, как я выборку всех записей первой и я не могу orderBy()

ответ

1

Использование whereHas(), который будет отфильтруйте свое отношение по его подотчетности. Auktion должны иметь отношение как hasMany() л к gebots

$userId = Auth::user()->getKey(); 
App\Auktion::whereHas('gebot', function ($query) use($userId) { 
    //here you need to filter gebots which belongs to user 
    $query->where('user_id', $userId); 
})->orderBy('end_time')->get(); 
+0

Это, к сожалению, не дал никаких результатов. Моя модель 'Auktion' имеет' hasMany() 'realtionship для' Gebot' – 4ndro1d

+0

Вместо 'Auth :: user() -> auktionen-> whereHas()' мы должны использовать 'App \ Auktion :: whereHas()' -> пожалуйста, измените его, и я соглашусь на ваш ответ, спасибо – 4ndro1d

+0

код пример отредактирован) – Silwerclaw

Смежные вопросы