首页 > 解决方案 > 优化 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();

标签: mysqllaraveleloquent

解决方案


首先,你需要阅读Laravel eloquent

例如。Transaction控制器中带有模型的简单代码

$transaction = Transaction::get();

您可以在模型中使用雄辩的关系

交易模型

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

检索关系约束急切负载

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

Laravelmysql用作默认连接或基于您的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();

推荐阅读