Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][Laravel] Dane z mysql jako tablica (nie objekt)
Octobus
post 9.01.2020, 15:20:04
Post #1





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


Jak zmusic Laravel zeby wszystkie wyniki zapytan sql zwracal jako array ? Ponizsze zapytanie zwraca mi objekt
Kod
DB::table('moja_tablea')
->where('block_id', $data['block']->id)
>get();


Ten post edytował Octobus 9.01.2020, 15:20:35
Go to the top of the page
+Quote Post
nospor
post 9.01.2020, 15:31:29
Post #2





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




google nie zamkneli...
https://stackoverflow.com/questions/2617426...object-to-array


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Octobus
post 9.01.2020, 15:40:31
Post #3





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


szukalem wielokrotnie i nie jest to (dla mnie) takie latwe, dodalem w __constructor():
  1. DB::setFetchMode(\PDO::FETCH_ASSOC);

w logach wyskakuje mi blad:
Kod
Call to undefined method Illuminate\Database\MySqlConnection::setFetchMode() {"exception":"[object] (Symfony\\Component\\Debug\\Exception\\FatalThrowableError(code: 0): Call to undefined method Illuminate\\Database\\MySqlConnection::setFetchMode() at [...]/vendor/laravel/framework/src/Illuminate/Database/DatabaseManager.php:349)
Go to the top of the page
+Quote Post
nospor
post 9.01.2020, 15:42:40
Post #4





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Pierwszy wyniki w google dla: laravel convert object to array

Co do bledu:
a nie mozesz tego odpalic bezposrednio przed zapytaniem?

Ewentualnie zmienic globalnie, jak rowniez napisno w linku, co ci podalem
// application/config/database.php

'fetch' => PDO::FETCH_CLASS,
// to
'fetch' => PDO::FETCH_ASSOC,


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
viking
post 9.01.2020, 15:44:37
Post #5





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


https://laravel.com/docs/6.x/eloquent-seria...izing-to-arrays


--------------------
Go to the top of the page
+Quote Post
nospor
post 9.01.2020, 15:47:42
Post #6





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




@viking nie lepiej jednak ustawic by od razu zwracalo tablice? Uzywajac toArray() mamy mase zbednych operacji po drodze. Owszem, toArray moze byc przydatne gdy zawsze pracujemy na obietkach i w jakims jednym momencie chcemy miec tablice, ale Octobus raczej na chwile obecna zawsze bedzie pracowal na tablicach


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Octobus
post 9.01.2020, 15:59:25
Post #7





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


Zawsze na tablicach i nie chce za kazdym razem zmieniac formatu z objektu na tablice ... Problem w tym ze wyczytalem ze laravel zablokowal taka funkcje (https://laravel.com/docs/5.4/upgrade), teraz trzeba inaczej:
Kod
Laravel no longer includes the ability to customize the PDO "fetch mode" from your configuration files. Instead, PDO::FETCH_OBJ is always used. If you would still like to customize the fetch mode for your application you may listen for the new Illuminate\Database\Events\StatementPrepared event:

  1. Event::listen(StatementPrepared::class, function ($event) {
  2. $event->statement->setFetchMode(...);
  3. });

a z racji tego ze dopiero zaczynam z Laravel nie jestem pewien gdzie to umiescic ... uzywam laravel 5.8
Go to the top of the page
+Quote Post
nospor
post 9.01.2020, 16:02:27
Post #8





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Mysle, ze to
https://laravel.com/docs/5.8/events
dosc jasno wyjasnia jak sie dodaje eventy wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 9.01.2020, 17:22:22
Post #9





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


A możesz powiedzieć w czym Ci przeszkadza obudowanie w obiekty?
Go to the top of the page
+Quote Post
Octobus
post 10.01.2020, 11:33:42
Post #10





Grupa: Zarejestrowani
Postów: 259
Pomógł: 1
Dołączył: 3.07.2011

Ostrzeżenie: (0%)
-----


@Pyton_000 bo zawsze uzywam tablic w swoim kodzie i teraz jak baza zwraca mi objekt non stop sie myle bo nie wiem czy zmienna w tablicy wielowymiarowej jest typu array czy object ... i ciagle mam bledy typu "Cannot use object of type stdClass as array" przez co pisanie aplikacji bardzo sie wydluza :/

Probowalem to zrobic, dodalem kod z mojego poprzedniego postu w app/Providers/EventServiceProvider.php w funckje boot(), przed linijka parent::boot(); ale to nic nie dalo, tak samo jak wszystkie inne rozwiazania ... nie udalo mi sie tego zrobic. Cos widocznie robie zle ale nie wiem co.
Go to the top of the page
+Quote Post
nospor
post 10.01.2020, 11:38:52
Post #11





Grupa: Moderatorzy
Postów: 36 442
Pomógł: 6290
Dołączył: 27.12.2004




Cytat
przed linijka parent::boot()

Nie znam sie na laravel, ale w linku co ci dalem oni wkladaja PO a nie PRZED

Cytat
tak samo jak wszystkie inne rozwiazania
Raz ze nie wiemy jakie rozwiazania zrobiles, a dwa ze na 100% nie zrobiles wszystkich, bo jest takie, ktore na pewno dziala wink.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 10.01.2020, 21:19:33
Post #12





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Cytat(Octobus @ 10.01.2020, 11:33:42 ) *
@Pyton_000 bo zawsze uzywam tablic w swoim kodzie i teraz jak baza zwraca mi objekt non stop sie myle bo nie wiem czy zmienna w tablicy wielowymiarowej jest typu array czy object ... i ciagle mam bledy typu "Cannot use object of type stdClass as array" przez co pisanie aplikacji bardzo sie wydluza :/


To masz chyba coś skopane bo jak używasz eloquesnt to zwracane są obiekty Encji w kolekcji i oba można traktować jak array pomimo że są obiektami (collection jest Arrayable a Entity mają magic method pozwalające na dost. jako array)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 18.04.2024 - 03:49