Мне нужно иметь возможность использовать whereRaw в отношениях сводной таблицы, чтобы получить все данные на сегодня.
Например, это моя модель
public function comments(){
return $this->belongsToMany('App\Models\Comments', 'user_comments', 'user_id', 'comment_id');
}
Что отлично работает, дает мне все необходимые данные.
Но как тогда использовать оператор whereRaw на этой модели? Итак, если мне нужно было перебрать каждый комментарий, который был создан сегодня, но поле даты комментария хранится в формате Y-m-d H:i:s, поэтому мне нужно обрезать время, как бы я это сделал? Пытаюсь сделать что-то подобное
foreach($user->comments->whereRaw('DATE(comment_date) = DATE(NOW())') as $comment){
echo $comment->content;
}
Но он просто возвращается
[BadMethodCallException]
Method whereRaw does not exist.
Разве нельзя вот так использовать компоновщик whereRaw?
Также как мне сделать это через отношения взаимоотношений?
Например, если у моих комментариев была связь с таблицей с именем comment_location, и я хотел бы сделать whereRaw для отношения местоположения комментария, как это
foreach($user->comments as $comment){
foreach($comment->commentLocation->whereRaw() as $location){
echo $location->name;
}
}






Вы используете $user->comments, который является экземпляром Illuminate\Database\Eloquent\Collection, но вы должны использовать $user->comments(), который является экземпляром Illuminate\Database\Eloquent\Relations\BelongsToMany, и вы можете добавить свою функцию построителя запросов
Фиксированный код:
foreach($user->comments()->whereRaw('DATE(comment_date) = DATE(NOW())')->get() as $comment) {
echo $comment->content;
}
Не могли бы вы подробнее рассказать о почему как, это решает проблему?
Ах да ладно! Как бы я сделал это, если бы у меня был доступ к отношениям отношений? См. Отредактированный вопрос
См. На этот вопрос принят ответ https://stackoverflow.com/questions/3760956/how-do-i-write-a -sql-query-for-a-specific-date-range-and -date-time-using-sql -сер. Это должно быть полезно для вас
также добавьте -> получить () после -> гдеRow ()
Попробуйте
$user->comments()->whereRaw.... Обратите внимание на()после комментариев