2015-08-29 2 views
-1

Я хочу, чтобы сводная сводная таблица связывала модели пользователей с файлами и подсчитывала количество загрузок, чтобы узнать, какой пользователь загрузил файлы.Как сделать отношения в Eloquent, чтобы подсчитать, какие загрузки были сделаны, с помощью которых пользователи

Проблема заключается в том, что я не знаю, как это сделать на уровне отношений Eloquent - как это должно выглядеть, когда я хочу спросить Laravel, какие файлы были загружены пользователем с идентификатором ... 5, например ,

Пожалуйста, расскажите, как должны выглядеть модели и отношения в них? И как я могу попросить Eloquent узнать количество загрузок (и список пользователей, которые скачали конкретный файл).

Большое спасибо!

+0

Попробуйте посмотреть в документации первой. www.laravel.com –

ответ

0

Вам понадобится таблица загрузок (id, user_id, file_id) и модуль, в котором вы перечисляете все загрузки.

download.php

<?php 
class Download extends Eloquent 
{ 
    protected $table = 'downloads'; 

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

    public function file() 
    { 
     return $this->belongsTo('File', 'file_id'); 
    } 
} 

чем при использовании контроллера это:

$downloads = Download::all(); 
$list = []; 

foreach($downloads as $download) 
{ 
$list[$download->id]['download'] = $download; 
$list[$download->id]['user'] = $download->user; 
$list[$download->id]['file'] = $download->file; 
} 

Для получения загруженных файлов от пользователей

User.php

<?php 
    class User extends Eloquent 
    { 
     protected $table = 'users'; 

     public function downloads() 
     { 
      return $this->hasMany('Download', 'user_id', 'id'); 
     } 
    } 

В контроллере

$downloads = $user->downloads; 

То же самое для файлов

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