2015-06-07 4 views
1

Я пытаюсь извлечь последние пользовательские тренировки, и я не знаю, почему я не могу этого сделать. Я думаю, что у меня все хорошо. Пожалуйста, проверьте это. enter image description here, где метод не работает должным образом на laravel?

+0

Как я вижу, вы используете MongoDB, Php время и Монго Время отличается. Можете ли вы попытаться использовать MongoDate http://php.net/manual/en/class.mongodate.php вместо Carbon. –

+0

MongoDB? Нет, я не использую его. Экран был захвачен во время тестирования на tinker (php artisan tinker) – suarsenegger

+0

Я предполагаю, что у вас есть отношения под названием «тренировки». Это дает вам то, что вам нужно: '$ user-> workouts() -> где ('created_at', '> =', Carbon \ Carbon :: now() -> subMonth()) -> get();' ? (обратите внимание: 'workouts()' vs 'workouts') – patricus

ответ

1

Вы вызываете метод where() в Eloquent Collection, а не запрос отношения.

Метод where() в коллекции работает иначе, чем метод where() по запросу. Для коллекции второй аргумент - это значение для сравнения, и функция может выполнять только сравнительное сравнение. Третий параметр является логическим, чтобы определить, является ли он строгим равным (===) или нет (==).

Чтобы сделать то, что вы ищете, вам нужно позвонить where() по запросу отношений (и get() результаты после):

// note $user->workouts() is the relationship query 
$workouts = $user->workouts()->where('created_at', '>=', Carbon\Carbon::now()->subMonth())->get(); 
+1

Клянусь, я сделал это раньше, но без каких-либо результатов. Возможно, я забыл метод get() 'в конце. Я ценю ваше объяснение. Огромное спасибо. – suarsenegger

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