Оптимизировать Laravel Eloquent? - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть рабочий запрос на мой проект 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();

1 Ответ

0 голосов
/ 03 апреля 2019

Сначала вам нужно прочитать Laravel eloquent

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

$transaction = Transaction::get();

Вы можете использовать Eloquent Relationship в вашей модели

Модель транзакции

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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...