У меня есть две модели: User и DumpDownloadHistory. DumpDownloadHistory хранит историю всех зарегистрированных пользователей. Отношения между пользователем и DumpDownloadHistory - это OneToMany. DumpDownloadHistory хранит:
- user_id (пользователь, который загрузил id),
- набор данных (имя файла),
- user_ip (ip-адрес операции),
- downloadCost (сколько токенов стоило скачать этот файл).
Мне нужно найти историю загрузок из входных данных фильтра. Например, найдите мне всю историю загрузок, чья электронная почта: 'email@email.com'.
Me код:
public function history(Request $request)
{
$downloadHistory = DumpDownloadHistory::query();
if ($request->has('email') && $request->input('email') != '') {
// Find all download history related to this email
}
if ($request->has('dataset') && $request->input('dataset') != '') {
$downloadHistory = $downloadHistory->where('dataset', 'LIKE', '%'. $request->input('dataset') .'%');
}
if ($request->has('date_from') && $request->input('date_from') != '' && $request->has('date_to') && $request->input('date_to') != '') {
$datefrom = $request->input('date_from');
$dateto = $request->input('date_to');
$downloadHistory = $downloadHistory->wherebetween('created_at', [$datefrom, $dateto]);
}
if ($request->input('hasPayed') == '1') {
$downloadHistory = $downloadHistory->where('downloadCost', '!=', 'NULL');
}
$downloadHistory = $downloadHistory->get();
return view('dumpDb.history', compact('downloadHistory'));
}
Модель пользователя:
class User extends Authenticatable
{
use Notifiable;
public function downloadHistorys(){
return $this->hasMany(DumpDownloadHistory::class);
}
}
Модель DumpDownloadHistory :
class DumpDownloadHistory extends Model
{
protected $fillable = ['dataset', 'user_ip', 'downloadCost'];
public function user(){
return $this->belongsTo(User::class);
}
}