Оптимизировать Laravel Eloquent?

У меня есть рабочий запрос в моем проекте laravel. Есть ли способ оптимизировать или сократить этот код?

                $transaction = DB::connection('mysql')->table('pwn_transaction')
                        ->join('pwn_transaction_has_details', 'pwn_transaction.ticket_number', '=', 'pwn_transaction_has_details.pwn_transaction_ticket_number')
                        ->join('pwn_transaction_details', 'pwn_transaction_has_details.pwn_transaction_details_id',  '=', 'pwn_transaction_details.id')
                        ->join('pwn_transaction_has_transaction_items', 'pwn_transaction.ticket_number', '=', 'pwn_transaction_has_transaction_items.pwn_transaction_ticket_number')
                        ->join('pwn_branch_has_transaction', 'pwn_transaction.ticket_number', '=', 'pwn_branch_has_transaction.pwn_transaction_ticket_number')

                        ->join('pwn_transaction_has_customers', 'pwn_transaction.ticket_number', '=', 'pwn_transaction_has_customers.pwn_transaction_ticket_number')
                        ->join('pwn_customers', 'pwn_transaction_has_customers.pwn_customers_id', '=', 'pwn_customers.id')
                        ->groupBy('ticket_number')
                        ->get();

Да, вы можете использовать реляционные овцы для оптимизации вашего кода.

Manisha 03.04.2019 08:35
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
105
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Во-первых, вам нужно прочитать Ларавель красноречивый

Например. Простой код с моделью Transaction в вашем контроллере

$transaction = Transaction::get();

Вы можете использовать Красноречивые отношения в своей модели.

Модель сделки

public function items()
{
   return $this->hasOne(TransactionItem::class); //based on your model and relationship
}

Получить с отношением Ограничение стремительных нагрузок

$transaction = Transaction::with('items)->get();

Laravel использует mysql в качестве соединения по умолчанию или на основе вашего файла config/database.php

Если вы хотите использовать несколько баз данных, вы можете использовать что-то вроде этого

Определите строку ниже в вашей модели Transaction

protected $connection = 'your-connection-name';

На основании вашего комментария

Убедитесь, что вы определили правильные отношения в модели Transaction

Transaction::with('hasDetails', 'details', 'branch', 'hasCustomers', 'customer')
            ->groupBy('ticket_number')
            ->where('ticket_number', $request->pawnTicket) //assume ticket_number column is inside the transactions table
            ->get();

Привет @bhavinjr, спасибо за это. Я вроде понял идею. Мне удалось получить код $transaction = Transaction::with('hasDetails') ->with('details') ->with('branch') ->with('hasCustomers') ->with('customer') ->groupBy('ticket_number') ->where('pwn_transaction.ticket_number', '=', $request->input('pawnTicket')) ->get(); Так как к ним присоединиться?

brinhildr 03.04.2019 19:02

Другие вопросы по теме