How can I show the date of database in this code? - laravel

#foreach($documentos as $documento)
<ul class="mail-list">
<li class="mail-item unread">
<div class="m-chck"><label class="px-single"><input type="checkbox" name="" value="" class="px"><span class="lbl"></span></label></div>
<div class="m-star"> </div>
<div class="m-from">{{$documento->assunto}} </div>
<div class="m-subject"><span class="label label-danger">Social</span> Reset your account password</div>
<div class="m-date">3:25 PM</div>
</li>
</ul>
#endforeach
I need show the date from BD... I need show the date from BD, cause iam using pixelAdmin

Carbon::now()->format('d-m-Y') or you can change the format to however you need
I would suggest you do this in the controller and pass it to the view
Laravel has a Carbon dependency attached to it but you can find the Carbon doc and see how it works

you can use Carbon for formatting timestamp. In laravel migration file you will find 2 default timestamp columns. one is created_at and another is updated_at. If you want to show the time when the document is created you can use $documento->created_at with Carbon for readable format.
Here is an example,
{{ \Carbon\Carbon::parse($documento->created_at)->toFormattedDateString() }}
The output will be similar to Dec 25, 1975.

Related

How to use a variable inside a carbon datetime?

Good morning guys, i need to have a custom date that always has the current date but a certain time to be able to compare two dates and get the remaining time. At the moment something like this occurred to me:
$day=date("d");
$dayy= now();
$datelim= Carbon::createFromFormat('Y-m-d H:i:s', '2020-05-',$day, '22:00:02');
return view('fen.index', [
'works' => Period::select('paperiod.descriptionp','pamatrixinfoperio.description', 'pamatrixinfoperio.codpar')
->join('pamatrixinfoperio', 'pamatrixinfoperio.cod_paperiod', '=', 'paperiod.cod')
->where('pamatrixinfoperio.read_at', '=', 0, 'AND')
->where('pamatrixinfoperio.cod_paperiod', '=', 1)
->get(),
'Periodres' => $fechalim
]);
but I don't know how to concatenate that variable day in the carbon '2020-05-',$day, '22:00:02' , How could I use it because my objective is that the variable always has the current day, Monday, Tuesday, Wednesday, but that the time is always the same.
On the other hand, I don't know if they could help me. How can I compare dayy and datelim? So in the view I can have for example: "The work is about to end in 3 days, 3 hours and 20 seconds" I hope you can help me, because I find more complex examples in carbon but not basic and I don't know how to do this :(
my view is this:
#extends('layouts.app')
#section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">WorksF</div>
<div class="card-body">
#if (session('status'))
<div class="alert alert-success" role="alert">
{{ session('status') }}
</div>
#endif
Welcome {{Auth::user()->name}}, Lasis informs you that the following files are about to end in:
#foreach($works as $work)
<li class="list-group-item">
{{$work->description}}
you have the next time to deliver the report:
<b>{{$Periodres}}</b>
</li>
#endforeach
</div>
</div>
</div>
</div>
</div>
#endsection
As you can see the view is not finished but I am looking for something similar, Thanks in advance for the help.
Concatenation in PHP use . not , and you need a space between $day and the hour.
Carbon::createFromFormat('Y-m-d H:i:s', '2020-05-' . $day . ' 22:00:02');
Of course Carbon::create() as suggested by Nacho is appropriate, but still Carbon::createFromFormat() works also fine if the given input is given as 1 single string and matches the format.
I think in your case you can use:
Carbon::create($year, $month, $day, $hour, $minute, $second)

looping issue in laravel

i have two tables which one has room and other has bed when room table enter no of bed 4 then it will other bed table bed four time entry for 4 beds
then i want make every bed own modal so how to do it
i m little confuse for how to do it
here is my code
$room = new Room(array(
'floor_id'=>$request->get('floor_id'),
'room'=>$request->get('room'),
'bed_type'=>$request->get('bed_type'),
'no_of_beds'=>$request->get('no_of_beds'),
'status'=>'assign'
));
$room->save();
$id = $room->no_of_beds;
for($i=1; $i<=$id; $i++){
\DB::table('beds')->insert([
'floor_id'=>$request->get('floor_id'),
'room_id'=>$room->id,
'beds'=>$i]);
}
return back();
when i want in blade file then everytime pass first id so how to beds wise id pass in blade file to use modal popup
beds add propertly as i want but when i in blade file to open each modal for bed then everytime first id get so how to do it as beds wise id when i click modal popup
This is the blade
here is my blade file
#for($i=1; $i<=$lists->no_of_beds; $i++)
<div class="col-lg-3">
<div class="kt-widget24__info">
<span data-toggle="modal" data-target="#modal_assign-{{$lists->id}}">+
</span>
</div>
</div>
#endfor
sorry its very hard to understand what you are trying to do.
Unable to understand your english.
please elaborate your question so that we can answer.
**Questions regarding your code snippet are ** :
1. can you please tell if it is savinf number of beds in DB. e.g if i entered number of beds as 4 does it enter them in DB ? if it does(looks like it do) then what is the problem here ? What do you want to achieve in your Blade file.
Here is my blade file:
#for($i=1; $i<=$lists->no_of_beds; $i++)
<div class="col-lg-3">
<div class="kt-widget24__info">
<span data-toggle="modal" data-target="#modal_assign-{{$lists->id}}">+
</span>
</div>
</div>
#endfor

How do I use a row count in an #if in a Laravel view?

I am brand new to Laravel and I'm running Version 6.
I want my view to display a button if one of my MySQL tables has rows that meet a specific condition but I'm having trouble figuring out how to code it - and even WHERE to code it - within my Laravel application.
My MySQL table is called diary_entries and various users of the system will contribute zero to n rows to it. Each row of the table contains a user id called client. When a given user goes to the Welcome view, I want the view to determine if that user currently has any rows in the diary_entries table. If he does, I want to display a button that will take him to another page where the entries can be displayed or edited or deleted.
I think I want to construct an #if that counts the number of records for that user; if the count is greater than zero, I want to display the button, otherwise the button is not displayed.
The problem is that I can't figure out how to code this. I've looked at the examples in the Eloquent section of the manual but they aren't particularly clear to me. I found a note near the top that said the count() function expects a Collection as an argument and that the result of an Eloquent statement is always a Collection so I guessed that I just have to execute an Eloquent query, then apply count() to the resulting Collection. But every variation of that idea which I've tried has thrown exceptions.
Here was the guess that seemed most logical to me:
#extends('layout');
#section('content');
<div class="content">
<img class="centered" src="/images/sleeping-cat.jpg" alt="sleeping cat" height="250">
<div class="title m-b-md">
<h1> Sleep Diary </h1>
</div>
<div>
<h3>{{Auth::user()->name }}</h3>
</div>
<div>
#if (count(App\DiaryEntry::select('*')->where('client', Auth::user()->name) > 0))
<p>
<a class="btn btn-primary"> View / edit existing sleep diary entries </a>
</p>
#endif
</div>
<div>
<p>
<a class="btn btn-primary" href="/diaryEntries"> Create a new sleep diary entry </a>
</div>
</div>
#endsection
This is obviously wrong because it throws an exception so how do I make it right? Does the building of the collection have to move into the Controller? If so, how do I invoke the method and see its result? Or can I do something like I have already done but just adjust the syntax a bit?
EDIT
I've imitated Sehdev's suggestion but I get this error:
$count is undefined
Make the variable optional in the blade template. Replace {{ $count }} with {{ $count ?? '' }}
Here is my welcome view:
#extends('layout');
#section('content');
<div class="content">
<img class="centered" src="/images/sleeping-cat.jpg" alt="sleeping cat" height="250">
<div class="title m-b-md">
<h1>Sleep Diary</h1>
</div>
<div>
<h3>{{ Auth::user()->name }}</h3>
</div>
<div>
#if ($count) > 0))
<p>
<a class="btn btn-primary">View/edit existing sleep diary entries</a>
</p>
#endif
</div>
<div>
<p><a class="btn btn-primary" href="/diaryEntries">Create a new sleep diary entry</a>
</div>
</div>
#endsection
And this is the relevant function from DiaryEntryController:
public function countEntriesOneUser()
{
$count = DiaryEntry::select('*')->where('client', Auth::user()->name)->count();
view("welcome", compact("count"));
}
Should the compact function be returning $count instead of count? I can't find the compact function in the manual with the search function so I'm not clear what it does or what the proper syntax is. I just tried changing the last line of the function to
view("welcome", $count);
but that produced the same error.
Try this,
#php
$count=\App\DiaryEntry::where('client', Auth::user()->name)->count();
#endphp
#if($count>1)
<p><a class="btn btn-primary">View/edit existing sleep diary entries</a></p>
#endif
Using App\DiaryEntry::select('*')->where('client', Auth::user()->name) directly on your blade template is a bad practise.
You can execute your question in your controllers method and then pass the result on your view file
Your function
function test(){
$count = DiaryEntry::select('*')->where('client', Auth::user()->name)->count(); // get the total no of records using count
view("index", compact("count")) // pass your count variable here
}
then you can directly use $count in your #if condition
Your blade template
<div>
#if ($count > 0)
<p><a class="btn btn-primary">View/edit existing sleep diary entries</a></p>
#endif
</div>

Laravel Form - Sent as an email in a table

I have a form on my website, which has required fields, and non required fields. The user fills in there details and submits the form. This is then emailed to the owner, and the data is then presented in a table.
However is it possible to show only the data that has been filled in and then remove the fields where no data was entered.
So far I have:
Blade Template:
div class="col-md-6">
<div class="row">
<div class="col-md-6">
<p><b>First Names</b></p>
</div>
<div class="col-md-6">
<p>{{ $first_names }}</p>
</div>
</div>
Which is then sent and is outputted as a table below:
<?php
if (!empty($titles)) {?>
<td class="tg-031e">Title:</td>
<td class="tg-031e">{{ $titles }}</td>
<?php }
?>
But I am assuming an else or else if statement would be required. So how would I have it so that only the fields that where filled in where shown in the table please.
Thanks
If you want to return nothing when there is no title the code below shoud make it work.
#if (isset($titles))
<td class="tg-031e">Title:</td>
<td class="tg-031e">{{ $titles }}</td>
#endif
Let me know if this worls :)
ps: #if(isset($titles)) does not work try #if($titles == NULL)
You can also try something like this:
http://laravel.com/docs/4.2/templates#other-blade-control-structures
Sometimes you may wish to echo a variable, but you aren't sure if the variable has been set. Basically, you want to do this:
{{{ isset($name) ? $name : 'Default' }}}
However, instead of writing a ternary statement, Blade allows you to use the following convenient short-cut:
{{{ $name or 'Default' }}}

Retrieve unique entries from DB using Eloquent Laravel 4

I am using Laravel-4 to build an application. I am trying to make the best use of Eloquent ORM. Currently I am displaying a list of db entries which all have a number of tags associated with them
To the right I display a grid of all the tags however it is showing duplicate tags. I would only like to show unique tags
This is my code:
<div class="tags-panel">
<div class="tags-title"><h1>Tags</h1></div>
<div class="tags-cloud">
#foreach(Tag::distinct()->get() as $tag)
<span class="num"> {{ Tag::getAmount($tag->id) }} </span> {{$tag->name}}
#endforeach
</div>
</div>
Does Eloquent provide a way of only retrieving distinct entries from the db?
Try using Tag::groupBy('field_name')->get()
<div class="tags-panel">
<div class="tags-title"><h1>Tags</h1></div>
<div class="tags-cloud">
#foreach(Tag::groupBy('field_name')->get() as $tag)
<span class="num"> {{ Tag::getAmount($tag->id) }} </span> {{$tag->name}}
#endforeach
</div>
</div>
To use the distinct()-function you have either have a select() in your chain, or use a field as an argument in your get()-function. For example:
$tags = Tag::distinct()->get(array('field'));
or
$tags = Tag::select('field')->distinct()->get();
You could also instead use groupBy('field') if you don't want to supply field names:
$tags = Tag::groupBy('field')->get();

Resources