Powiedzmy, że używamy kreatora zapytań Laravel:
$users = DB::table('really_long_table_name')
->select('really_long_table_name.id')
->get();
Szukam odpowiednika tego SQL:
really_long_table_name AS short_name
Byłoby to szczególnie pomocne, gdy muszę wpisać wiele elementów typu select i wheres (lub zazwyczaj umieszczam alias w aliasie kolumny elementu select, który jest używany w tablicy wyników). Bez aliasów tabel jest dużo więcej pisania i wszystko staje się dużo mniej czytelne. Nie możesz znaleźć odpowiedzi w dokumentacji laravel, żadnych pomysłów?
protected $table = "books";
), Więc jak mogę zrobić aliasy? (np generowane SQL:... FROM books AS A ...
)protected $table = 'really_long_table_name AS short_name';
ale to by się nie udało na INSERTach. Może również zepsuć zapytania dotyczące relacji. Używam Lumen i wzorca DDD / Repository, aby całkowicie uniknąć Eloquent.Aby używać aliasów w modelach elokwentnych, zmodyfikuj swój kod w następujący sposób:
Spowoduje to automatyczne dodanie przedrostka tabeli do nazw tabel i zwrócenie instancji
Items
modelu. nie jest to czysty wynik zapytania. DodanieDB::raw
zapobiega dodawaniu przedrostków tabel do aliasów przez laravel.źródło
Unknown column 'table_alias.deleted_at'
->withTrashed()
i->whereNull('table_alias.deleted_at')
Oto, jak można to zrobić. Podam przykład z dołączaniem, aby stało się to dla kogoś bardzo jasne.
Mam nadzieję że to pomoże.
źródło
Do użycia w wymowie. Dodaj górę swojego modelu
protected $table = 'table_name as alias'
..następnie użyj w zapytaniu, na przykład
ModelName::query()->select(alias.id, alias.name)
źródło
Możesz użyć mniej kodu, pisząc to:
Oczywiście, jeśli chcesz wybrać więcej pól, po prostu wpisz „,” i dodaj więcej:
Jest to bardzo praktyczne, gdy używasz złożonego zapytania sprzężenia
źródło
Tak samo jak odpowiedź AMIB, dla błędu usuwania nietrwałego "Nieznana kolumna 'table_alias.deleted_at'", po prostu dodaj
->withTrashed()
i obsłuż to samodzielnie, jak->whereRaw('items_alias.deleted_at IS NULL')
źródło