У меня есть таблица, где я должен проверить поле. Если дата будет 30 дней до даты «validto», она будет красной (какое-то уведомление, что осталось только 30 дней). В базе данных допустимым является поле "дата". Я попытался добавить переменную, используя углерод, но она не работает:

< Сильный > Контроллер:

$users = User::all();
        $dt = Carbon::today();
        $ends = $dt->addDays(30);
        return view ('users.index', ['users'=>$users, 'dt'=>$dt, 'ends'=>$ends]);

< Сильный > Вид:

<tbody>


 @foreach($users as $user)
            <th> {{$user ->name}}</th>
            <th>{{$user ->email}}</th>
            @if($user->validTo == $ends)
          <th><p style="color:red">{{$user ->validTo}}</p></th>
          @else
          <th>{{$user->validTo}}</th>
          @endif
          @endforeach
        </tbody>

Какие-либо предложения?

0
tomczas 28 Май 2017 в 20:17

2 ответа

Лучший ответ

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

<tbody>
@foreach($users as $user)
    <th>{{ $user->name }}</th>
    <th>{{ $user->email }}</th>
    @if(\Carbon\Carbon::now()->diffInDays($user->validTo, false) == 30)
        <th><p style="color:red">{{ $user->validTo->toDateString() }}</p></th>
    @else
        <th>{{ $user->validTo->toDateString() }}</th>
    @endif
@endforeach
</tbody>

Также добавьте это в вашу User модель, чтобы получить экземпляр даты Carbon.

protected $dates = ['validTo'];

Изменить: Обновлено, чтобы отображать только дату на основе ваших комментариев.

1
Sandeesh 28 Май 2017 в 18:07

Вы можете использовать gt(), чтобы проверить, больше ли дата, чем другая дата:

@if ($user->validTo->subDays(30)->gt(Carbon::now())

Если вы не добавили validTo в $dates массив, сделайте это, чтобы код работал.

0
Alexey Mezenin 28 Май 2017 в 18:27