как я могу получить данные из нескольких связанных таблиц в Laravel - PullRequest
0 голосов
/ 16 сентября 2018

У меня есть три таблицы: события - администраторы - зависимости Отношения между ними следующие: у зависимости много администраторов, у администратора много событий

вот так: enter image description here

Я пытаюсь показать имя зависимости, к которой принадлежит администратор, создавший событие. Как я могу взять данные с Laravel из этих трех таблиц?

Контроллер:

class WelcomeController extends Controller
{
    public function evento($slug){
        $event = Event::where('slug', $slug)->first();
        return view('evento', compact('event'));
    }

Модель события:

class Event extends Model
{

    protected $fillable = [
        'admin_id', 'place_id', 'name', 'slug', 'excerpt', 'body', 'status', 'file'
    ];

    public function admins(){
        return $this->belongsTo('App\Admin', 'admin_id');
    }

Модель администратора:

protected $fillable = [
        'name', 'email', 'password', 'cargo', 'dependence_id'
    ];

    public function dependencyAdmin(){
            return $this->belongsTo(Dependence::class);
        }

Модель зависимости:

class Dependence extends Model
{

    protected $fillable = [
        'name', 'slug'
    ];

    public function adminsDependence(){
        return $this->hasMany(Admin::class);
    }

Поэтому я пытаюсь показать это в представлении, но это не работает:

 <div class="panel-heading"> 
                Dependencia: 
                <a href="#">{{$event->admins->dependencyAdmin->name}}</a>
            </div>

1 Ответ

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

Проблема в том, что вы извлекаете только модель событий, не загружая отношения. См. здесь для более подробного объяснения

$event = Event::where('slug', $slug)->first();
$eventAdmins = $event->admins()->get();
$eventAdminDependency = $eventAdmins->dependencyAdmin()->get();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...