#laravel #php-carbon #laravel-5.8
#laravel #php-carbon #laravel-5.8
Вопрос:
Я только начал использовать Laravel, и в ячейке таблицы в моем индексном представлении мне нужно показать, сколько дней проходит до истечения срока действия продукта, используя текущую дату в качестве ссылки. В моей базе данных у меня уже сохранена дата истечения срока действия.
В моей таблице базы данных нет поля для хранения разницы в днях. Я просто показываю результат в представлении.
Версия Carbon, которую я использую, равна 2.16
Я уже получаю разницу в днях от контроллера. Но когда я сохраняю больше значений, все поля DaysDiff заменяются результатом с последней сохраненной даты.
Мой контроллер
use CarbonCarbon;
public function index()
{
$reservs = ReservasModelo::get();
$test = ReservasModelo::orderby('FechavencR')->pluck('FechavencR');
foreach ($test as $tes) {
$difer = Carbon::now();
$fini = $difer->diffInDays($tes);
}
return view('reservas.index', compact('reservs','fini'));
}
Мой взгляд
<tbody>
@foreach($reservs as $reserv)
<tr>
<td class="text-center">{{ $reserv->idReservas}}</td>
<td class="text-center">{{ $reserv->FechavencR}}</td>
<td class="text-center">{{ $fini}}<td>
<td class="text-center">{{ $reserv->UnidadMedida}}</td>
<td class="text-center">{{ $reserv->Racion}}</td>
<td class="text-center">{{ $reserv->RacionMes}}</td>
<td class="text-center">{{ $reserv->CantNece}}</td>
<td class="text-center">{{ $reserv->Existencia}}</td>
<td class="text-center">{{ $reserv->Variac}}</td>
<td class="text-center">{{ $reserv->idInventariosR}}</td>
<td class="text-center">{{ $reserv->idSucursalesR}}</td>
<td class="d-flex">
@csrf
<a href="{{ route('reservas.show', $reserv->idReservas)}}" class="btn btn-info">Ver</a>
<a href="{{ route('reservas.edit', $reserv->idReservas)}}" class="btn btn-primary">Editar</a>
<form action="{{ route('reservas.destroy', $reserv->idReservas)}}" method="POST">
@csrf
@method('DELETE')
<button class="btn btn-danger" type="submit">Eliminar</button>
</form>
</td>
</tr>
@endforeach
</tbody>
Моя таблица базы данных
reservas = [idReservas, FechavencR, UnidadMedida, Racion, RacionMes, CantNece, Existencia, Variac, idInventariosR, idSucursalesR]<
Я хочу показать в таблице разницу в днях с соответствующей датой истечения срока действия.
Кстати, извините за плохой английский.
Ответ №1:
public function index()
{
$reservs = ReservasModelo::get()->toArray();
$test = ReservasModelo::orderby('FechavencR')->pluck('FechavencR');
foreach ($test as $key=>$tes) {
$difer = Carbon::now();
$reservs[$key]['fini'] = $difer->diffInDays($tes);
}
return view('reservas.index', compact('reservs'));
}
@foreach($reservs as $reserv)
<tr>
<td class="text-center">{{ $reserv['idReservas'] }}</td>
<td class="text-center">{{ $reserv['FechavencR'] }}</td>
<td class="text-center">{{ $reserv['fini'] }}<td>
<td class="text-center">{{ $reserv['UnidadMedida'] }}</td>
<td class="text-center">{{ $reserv['Racion'] }}</td>
<td class="text-center">{{ $reserv['RacionMes'] }}</td>
<td class="text-center">{{ $reserv['CantNece'] }}</td>
<td class="text-center">{{ $reserv['Existencia']}}</td>
<td class="text-center">{{ $reserv['Variac'] }}</td>
<td class="text-center">{{ $reserv['idInventariosR'] }}</td>
<td class="text-center">{{ $reserv['idSucursalesR'] }}</td>
<td class="d-flex">
@csrf
<a href="{{ route('reservas.show', $reserv['idReservas'])}}" class="btn btn-info">Ver</a>
<a href="{{ route('reservas.edit', $reserv['idReservas'])}}" class="btn btn-primary">Editar</a>
<form action="{{ route('reservas.destroy', $reserv['idReservas'])}}" method="POST">
@csrf
@method('DELETE')
<button class="btn btn-danger" type="submit">Eliminar</button>
</form>
</td>
</tr>
@endforeach
Ответ №2:
Я также нашел этот способ сделать это.
Модель
use IlluminateDatabaseEloquentModel;
use CarbonCarbon;
class ReservasModelo extends Model
{
protected $table='reservas';
protected $primaryKey='idReservas';
protected $fillable = array ('idReservas','FechavencR','UnidadMedida','Racion','RacionMes','CantNece','Existencia','Variac','idInventariosR','idSucursalesR');
public function vencidos()
{
$difer = Carbon::now();
$fini = $difer->diffInDays($this->FechavencR,false);
return $fini;
}
}
Вид
<tbody>
@foreach($reservs as $reserv)
<tr>
<td class="text-center">{{ $reserv->idReservas}}</td>
<td class="text-center">{{ $reserv->idInventariosR}}</td>
<td class="text-center">{{ $reserv->idSucursalesR}}</td>
<td class="text-center">{{ $reserv->FechavencR}}</td>
<td class="text-center">{{ $reserv->UnidadMedida}}</td>
<td class="text-center">{{ $reserv->Racion}}</td>
<td class="text-center">{{ $reserv->RacionMes}}</td>
<td class="text-center">{{ $reserv->CantNece}}</td>
<td class="text-center">{{ $reserv->Existencia}}</td>
<td class="text-center">{{ $reserv->Variac}}</td>
<td class="text-center">{{ $reserv->vencidos()}}</td>
<td class="d-flex">
@if(auth()->user()->tipo!='UsuarioBasico')
@csrf
<a href="{{ route('reservas.show', $reserv->idReservas)}}" class="btn btn-info btn-sm">Ver</a>
<a href="{{ route('reservas.edit', $reserv->idReservas)}}" class="btn btn-primary btn-sm">Editar</a>
<form action="{{ route('reservas.destroy', $reserv->idReservas)}}" method="POST">
@csrf
@method('DELETE')
<button class="btn btn-danger btn-sm" type="submit">Eliminar</button>
</form>
@endif
</td>
</tr>
@endforeach
</tbody>