Laravel, как сделать запрос сводной таблицы созданной отметки времени созданного времени, равной дате - PullRequest
0 голосов
/ 25 октября 2018

У меня есть пользователи, привычки и таблица привычек, чтобы присоединиться к ним.

Я запрашиваю так:

$track = $h->userAnswers()->where('user_id', Auth::user()->id)->wherePivot('created_at', '=', Carbon\Carbon::now()->subDays($i))->first();

Это выполняется в цикле, который имеет обратный отсчет в течение 7 дней.в базе данных есть запись create_at: 2018-10-23 04: 48: 44

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

public function userAnswers()
{
    return $this->belongsToMany('App\Habit', 'habit_user_answers')->withTimestamps()->withPivot('answer_one', 'created_at')->orderBy('pivot_created_at', 'desc');

}

Почемуне запросит получить запись?

Ответы [ 2 ]

0 голосов
/ 25 октября 2018

Во-первых, я думаю, вам нужно учитывать соглашения Laravel о методах именования и свойствах.

Я предполагаю следующее на основе вашей структуры, которая включает пользователей и привычки.Итак, у нас есть модель User и модель Habit, пользователь belongsToMany habits и привычка belongsToMany users.Кроме того, сводная таблица habit_user содержит дополнительные поля, такие как answer_one, answer_created_at и отметки времени.

Если вы хотите сейчас запросить привычки, у вас есть два решения:

1 - использованиеwherePivot ()

auth()->user()->habits()->wherePivot('answer_created_at', today())->get();
auth()->user()->habits()->wherePivot('answer_one', '!=', 'something')->get();

2 - используя whereHas ()

auth()->user()->whereHas('habits', function($query){
    $query->where('pivot.answer_one', 'something');
})->get();
0 голосов
/ 25 октября 2018

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

Вы можете сравнивать даты следующим образом:

wherePivot('created_at', '>=', Carbon\Carbon::now()->subDays($i)->startOfDay())->wherePivot('created_at', '<=', Carbon\Carbon::now()->subDays($i)->endOfDay())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...