Получение всех связанных записей laravel - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть таблица со структурой:

Пользователь

id|name|is_active

Событие

id|user_id(foreign key from user table)|event_name|is_active

Пользователь события (Связанная таблица для событий и пользователей)

id|user_id(from user table)|event_id(from event table)|is_active

Запись

id|user_id(from user table)|event_id(from event table)|value|is_active

Я хочу получить все связанные записи пользователя после входа в систему

User (Object)
   |- Event(Object)
        |- Record
   |-Event2(Object)
        |- Record
        |- Record

Пожалуйста, предложите решение для этого.Я использую eloquent

Как и предполагалось, я использовал ответы, но при предоставлении условия where я не получаю желаемого результата Мой запрос

 $userDetail = $user->with('eventUsers.events.records')->whereHas('eventUsers', function ($query){
                $query->where('is_active', 1);
            })->first();

Здесь он отображает все результаты изevenusers.Я хочу только активные eventUsers.

Ответы [ 3 ]

0 голосов
/ 20 сентября 2018

Вы можете использовать логику eloquent Relationshiop, как показано ниже:

В модели пользователя. Для получения подробной информации о пользовательском событии

    public function getEvent(){
        return $this->hasMany('App\Event');
    }

В модели события. Для получения подробной информации о записи события

* 1007.*

Ваш окончательный запрос

$user_details = User::with('getEvent.getRecord')->get();
0 голосов
/ 20 сентября 2018
public function getAllEvents() {
    $results = User::with(['events','events.records'])->where('id',auth()->id());
    $events = $results->get();
}

User.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model {

    public function events() {
        return $this->hasMany(Event::class, 'user_id');
    }

}

Event.php

<?php

    namespace App;

    use Illuminate\Database\Eloquent\Model;

    class Event extends Model {

        public function records() {
            return $this->hasMany(Record::class, 'event_id');
        }

    }
0 голосов
/ 20 сентября 2018

сначала в вашей пользовательской модели:

public function events()
{
    return $this->belongsToMany(App\Event::class)->withPivot('is_active');
}

, затем в вашей модели событий:

public function records()
{
    return $this->hasMany(\App\Record::class);
}

, затем вы можете получить данные, подобные этой:

$user = User::where('id', auth()->id())->with('events.records')->first();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...