Nano Hash - криптовалюты, майнинг, программирование

Laravel/Eloquent и сравнение дат

Я хочу вернуть все строки в моей таблице базы данных, которым день или меньше. Я использую Laravel 4. Вот что я пробовал:

$date = date('Y-m-d H:i:s');
return MainContact::where(DATEDIFF('timestamp', $date), '<=', 1)->get();

Это не работает. Я прочитал документацию, и не похоже, что вы можете передавать функции Laravel MySQL. timestamp — это поле даты и времени. Как я могу сравнить эти даты в Laravel 4?

15.01.2013

Ответы:


1

Ответ, который дал вам пользователь1977808, не годится, потому что MySQL не может использовать индекс в столбце меток времени, поскольку он должен вычислять выходные данные функции DATE_SUB для каждой строки. Избегайте таких запросов, они должны каждый раз обрабатывать всю таблицу!

Как насчет такого:

return MainContact::where('timestamp', '>=', time() - (24*60*60))->get();

Я поставил >= там, потому что вы сказали «день или меньше», поэтому у них должна быть отметка времени, которая позже, чем вчера.

15.01.2013
  • Да, мне пришлось настроить его MySQL. 16.01.2013
  • Я сделал MainContact::where('timestamp', '>', DB::raw('NOW() - INTERVAL ' . $interval . ' DAY')->get();, а затем прошел в нужном интервале. 16.01.2013
  • Вы также можете использовать strtotime("-1 day"), например: MainContact::where('timestamp', '>' strtotime("-{$interval} day"))->get(); 16.01.2013

  • 2

    Альтернативно,

    Вы можете использовать Carbon API, который идет в комплекте с Laravel.

    ModelName::where( 'timestamp', '>=', Carbon::now() )->get();
    

    Ссылка: http://laravel.com/docs/5.1/eloquent-mutators

    18.10.2015
  • Он использует Laravel 4, а не 5. 29.03.2017

  • 3

    Вы также можете использовать whereDate(), whereDay(), whereMonth() и whereYear(). В этом случае whereDate() можно использовать как таковой с удобными функциями даты Carbon:

    return MainContact::whereDate('dateField', '<', Carbon::now()->subDay())->get();

    13.03.2017

    4

    Вы также можете выполнить необработанный запрос, используя:

    $results = DB::query( 'query' );
    

    Вы только не возвращаете объект модели обратно в результаты var

    15.01.2013
  • Я надеялся, что есть лучший способ. 16.01.2013

  • 5
  • В итоге я сделал что-то очень похожее. 16.01.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..