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






Во-первых, вам нужно прочитать Ларавель красноречивый
Например.
Простой код с моделью 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(); Так как к ним присоединиться?
Да, вы можете использовать реляционные овцы для оптимизации вашего кода.