Vinnaren i pepparkakshustävlingen!
2018-01-20, 21:44
  #1
Medlem
Tänk er en massa blogginlägg, typ modellen ser ut såhär:
BlogPost
created_at
title
content

Inga konstigheter, kolumnen created_at är en timestamp, och jag är osäker på formatet för när jag hämtar så hämtar jag alltid med typ
Kod:
<?php
date
('Y-m-d H:i'strtotime($post->created_at))

Om jag nu vill hämta alla inlägg från en månad, hur bör jag göra det?
Jag kan komma på ett par smutsiga lösningar dvs göra en ny kolumn och spara enbart år och månad, men denna information ingår ju redan i created_at
Citera
2018-01-20, 22:11
  #2
Medlem
Bongomans avatar
Datan ligger i? En gigantisk textfil?
Citera
2018-01-21, 00:35
  #3
Medlem
Citat:
Ursprungligen postat av Bongoman
Datan ligger i? En gigantisk textfil?
PHP och MySQL är det.

Hämtningen ser ut såhär:
Kod:
$posts Post::orderBy('created_at''desc')->paginate(10); 

och visningen ser ut såhär:
Kod:
@foreach($posts as $post)
  {{ 
$post->title }}
@endforeach 

Behöver man veta mer för att sätta sig in i problemet?
Citera
2018-01-21, 11:57
  #4
Medlem
Bongomans avatar
Citat:
Ursprungligen postat av fsociety
PHP och MySQL är det.

Hämtningen ser ut såhär:
Kod:
$posts Post::orderBy('created_at''desc')->paginate(10); 

och visningen ser ut såhär:
Kod:
@foreach($posts as $post)
  {{ 
$post->title }}
@endforeach 

Behöver man veta mer för att sätta sig in i problemet?

Ja, i funktionen orderBy i klassen Post finns fler funktionsanrop. Speciellt den som hämtar posterna från databasen är intressant. Att börja rota i klasser kräver en del kunskap om hur PHP fungerar och du måste veta vad som gör vad. Jag misstänker att du skaffat ett ramverk eller färdigt script och bara kört igång utan att för den skull veta hur det fungerar. Det är inga problem förrän du ska göra något annat än det som skaparen har tänkt.

Om det inte redan finns så kan man utöka funktionen med fler argument och funktioner.
Citera
2018-01-21, 20:20
  #5
Moderator
Protons avatar
Citat:
Ursprungligen postat av fsociety
Tänk er en massa blogginlägg, typ modellen ser ut såhär:
BlogPost
created_at
title
content

Inga konstigheter, kolumnen created_at är en timestamp, och jag är osäker på formatet för när jag hämtar så hämtar jag alltid med typ
Kod:
<?php
date
('Y-m-d H:i'strtotime($post->created_at))

Om jag nu vill hämta alla inlägg från en månad, hur bör jag göra det?
Jag kan komma på ett par smutsiga lösningar dvs göra en ny kolumn och spara enbart år och månad, men denna information ingår ju redan i created_at
Hade det varit SQL som du skickat till databasen hade det ju varit en baggis, då hade du ju kunat använda det som finns på https://stackoverflow.com/questions/...nth-of-a-field för att leta rätt på dina poster.

I och med din wrapper vet jag däremot inte hur det ska gå till, kolla i dokumentationen kring ramverket om vad du har för möjligheter i sådana fall, om några.

Edit: Du skulle möjligtvis kunna göra nån slags global search och kolla om du hittar
Kod:
MONTH(
nånstans i koden och backtracka därifrån.
__________________
Senast redigerad av Proton 2018-01-21 kl. 20:23.
Citera
2018-03-11, 05:02
  #6
Medlem
Citat:
Ursprungligen postat av Bongoman
Ja, i funktionen orderBy i klassen Post finns fler funktionsanrop. Speciellt den som hämtar posterna från databasen är intressant. Att börja rota i klasser kräver en del kunskap om hur PHP fungerar och du måste veta vad som gör vad. Jag misstänker att du skaffat ett ramverk eller färdigt script och bara kört igång utan att för den skull veta hur det fungerar. Det är inga problem förrän du ska göra något annat än det som skaparen har tänkt.

Om det inte redan finns så kan man utöka funktionen med fler argument och funktioner.

Citat:
Ursprungligen postat av Proton
Hade det varit SQL som du skickat till databasen hade det ju varit en baggis, då hade du ju kunat använda det som finns på https://stackoverflow.com/questions/...nth-of-a-field för att leta rätt på dina poster.

I och med din wrapper vet jag däremot inte hur det ska gå till, kolla i dokumentationen kring ramverket om vad du har för möjligheter i sådana fall, om några.

Edit: Du skulle möjligtvis kunna göra nån slags global search och kolla om du hittar
Kod:
MONTH(
nånstans i koden och backtracka därifrån.
Jag lade till en extra kolumn som sparar månaden xxxx-xx, så slipper appen räkna ut från created_at

Innan.

BlogPost
created_at
title
content

Efter.

BlogPost
created_at
title
content
month


Kod:
// returnar 2018-03 om det är mars iår
$month date('Y-m'strtotime(Carbon::now()));

$posts Post::where('month'$month)->orderBy('created_at''desc')->paginate(10); 
Citera
2018-03-20, 00:04
  #7
Medlem
z0mfg(ish)s avatar
Laravels query builder har bland annat funktionen whereMonth(): https://stackoverflow.com/questions/...abase-table-in
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback